{
 "cells": [
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# 波士顿房价预测\n",
    "经典的回归模型项目"
   ],
   "id": "cb27babf46450a74"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 1. 数据加载与观察\n",
    "数据：housing.csv"
   ],
   "id": "43604a6f39a9f876"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 1.1 导入库",
   "id": "bcc546ce54394bd2"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:06.946354Z",
     "start_time": "2025-03-16T09:19:06.943850Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ],
   "id": "2adb20b6551c20e0",
   "outputs": [],
   "execution_count": 1
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 1.2 加载数据",
   "id": "359a9a3318b26471"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:16.790541Z",
     "start_time": "2025-03-16T09:19:16.757978Z"
    }
   },
   "cell_type": "code",
   "source": [
    "names=[\"CRIM\", \"ZN\", \"INDUS\", \"CHAS\", \"NOX\", \"RM\", \"AGE\", \"DIS\", \"RAD\", \"TAX\", \"PTRATIO\", \"B\", \"LSTAT\", \"MEDV\"]\n",
    "data = pd.read_csv(\"housing.csv\", names=names, sep='\\s+')\n",
    "data.head(10)"
   ],
   "id": "a68fd25f7095da29",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "      CRIM    ZN  INDUS  CHAS    NOX     RM    AGE     DIS  RAD    TAX  \\\n",
       "0  0.00632  18.0   2.31     0  0.538  6.575   65.2  4.0900    1  296.0   \n",
       "1  0.02731   0.0   7.07     0  0.469  6.421   78.9  4.9671    2  242.0   \n",
       "2  0.02729   0.0   7.07     0  0.469  7.185   61.1  4.9671    2  242.0   \n",
       "3  0.03237   0.0   2.18     0  0.458  6.998   45.8  6.0622    3  222.0   \n",
       "4  0.06905   0.0   2.18     0  0.458  7.147   54.2  6.0622    3  222.0   \n",
       "5  0.02985   0.0   2.18     0  0.458  6.430   58.7  6.0622    3  222.0   \n",
       "6  0.08829  12.5   7.87     0  0.524  6.012   66.6  5.5605    5  311.0   \n",
       "7  0.14455  12.5   7.87     0  0.524  6.172   96.1  5.9505    5  311.0   \n",
       "8  0.21124  12.5   7.87     0  0.524  5.631  100.0  6.0821    5  311.0   \n",
       "9  0.17004  12.5   7.87     0  0.524  6.004   85.9  6.5921    5  311.0   \n",
       "\n",
       "   PTRATIO       B  LSTAT  MEDV  \n",
       "0     15.3  396.90   4.98  24.0  \n",
       "1     17.8  396.90   9.14  21.6  \n",
       "2     17.8  392.83   4.03  34.7  \n",
       "3     18.7  394.63   2.94  33.4  \n",
       "4     18.7  396.90   5.33  36.2  \n",
       "5     18.7  394.12   5.21  28.7  \n",
       "6     15.2  395.60  12.43  22.9  \n",
       "7     15.2  396.90  19.15  27.1  \n",
       "8     15.2  386.63  29.93  16.5  \n",
       "9     15.2  386.71  17.10  18.9  "
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CRIM</th>\n",
       "      <th>ZN</th>\n",
       "      <th>INDUS</th>\n",
       "      <th>CHAS</th>\n",
       "      <th>NOX</th>\n",
       "      <th>RM</th>\n",
       "      <th>AGE</th>\n",
       "      <th>DIS</th>\n",
       "      <th>RAD</th>\n",
       "      <th>TAX</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>B</th>\n",
       "      <th>LSTAT</th>\n",
       "      <th>MEDV</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.00632</td>\n",
       "      <td>18.0</td>\n",
       "      <td>2.31</td>\n",
       "      <td>0</td>\n",
       "      <td>0.538</td>\n",
       "      <td>6.575</td>\n",
       "      <td>65.2</td>\n",
       "      <td>4.0900</td>\n",
       "      <td>1</td>\n",
       "      <td>296.0</td>\n",
       "      <td>15.3</td>\n",
       "      <td>396.90</td>\n",
       "      <td>4.98</td>\n",
       "      <td>24.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.02731</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>6.421</td>\n",
       "      <td>78.9</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>396.90</td>\n",
       "      <td>9.14</td>\n",
       "      <td>21.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.02729</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>7.185</td>\n",
       "      <td>61.1</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>392.83</td>\n",
       "      <td>4.03</td>\n",
       "      <td>34.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.03237</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>6.998</td>\n",
       "      <td>45.8</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>394.63</td>\n",
       "      <td>2.94</td>\n",
       "      <td>33.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.06905</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>7.147</td>\n",
       "      <td>54.2</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>396.90</td>\n",
       "      <td>5.33</td>\n",
       "      <td>36.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.02985</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>6.430</td>\n",
       "      <td>58.7</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>394.12</td>\n",
       "      <td>5.21</td>\n",
       "      <td>28.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.08829</td>\n",
       "      <td>12.5</td>\n",
       "      <td>7.87</td>\n",
       "      <td>0</td>\n",
       "      <td>0.524</td>\n",
       "      <td>6.012</td>\n",
       "      <td>66.6</td>\n",
       "      <td>5.5605</td>\n",
       "      <td>5</td>\n",
       "      <td>311.0</td>\n",
       "      <td>15.2</td>\n",
       "      <td>395.60</td>\n",
       "      <td>12.43</td>\n",
       "      <td>22.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.14455</td>\n",
       "      <td>12.5</td>\n",
       "      <td>7.87</td>\n",
       "      <td>0</td>\n",
       "      <td>0.524</td>\n",
       "      <td>6.172</td>\n",
       "      <td>96.1</td>\n",
       "      <td>5.9505</td>\n",
       "      <td>5</td>\n",
       "      <td>311.0</td>\n",
       "      <td>15.2</td>\n",
       "      <td>396.90</td>\n",
       "      <td>19.15</td>\n",
       "      <td>27.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0.21124</td>\n",
       "      <td>12.5</td>\n",
       "      <td>7.87</td>\n",
       "      <td>0</td>\n",
       "      <td>0.524</td>\n",
       "      <td>5.631</td>\n",
       "      <td>100.0</td>\n",
       "      <td>6.0821</td>\n",
       "      <td>5</td>\n",
       "      <td>311.0</td>\n",
       "      <td>15.2</td>\n",
       "      <td>386.63</td>\n",
       "      <td>29.93</td>\n",
       "      <td>16.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0.17004</td>\n",
       "      <td>12.5</td>\n",
       "      <td>7.87</td>\n",
       "      <td>0</td>\n",
       "      <td>0.524</td>\n",
       "      <td>6.004</td>\n",
       "      <td>85.9</td>\n",
       "      <td>6.5921</td>\n",
       "      <td>5</td>\n",
       "      <td>311.0</td>\n",
       "      <td>15.2</td>\n",
       "      <td>386.71</td>\n",
       "      <td>17.10</td>\n",
       "      <td>18.9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 2
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 1.3 理解数据特征\n",
    "![](img/img.png)"
   ],
   "id": "b8cb47462ecb81c9"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 2. 数据可视化\n",
    "（初步探索）"
   ],
   "id": "76ba321e70f00787"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 2.1 查看所有特征与房价的相关性",
   "id": "7279fdacbe5dbb82"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:19.292504Z",
     "start_time": "2025-03-16T09:19:19.286556Z"
    }
   },
   "cell_type": "code",
   "source": [
    "correlation = data.corr()['MEDV'].sort_values(ascending=False)\n",
    "correlation"
   ],
   "id": "9b1d379d19f5c58f",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "MEDV       1.000000\n",
       "RM         0.695360\n",
       "ZN         0.360445\n",
       "B          0.333461\n",
       "DIS        0.249929\n",
       "CHAS       0.175260\n",
       "AGE       -0.376955\n",
       "RAD       -0.381626\n",
       "CRIM      -0.388305\n",
       "NOX       -0.427321\n",
       "TAX       -0.468536\n",
       "INDUS     -0.483725\n",
       "PTRATIO   -0.507787\n",
       "LSTAT     -0.737663\n",
       "Name: MEDV, dtype: float64"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 3
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 2.2 绘制房间数与房价的关系",
   "id": "afae38cd64a22637"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:20.767214Z",
     "start_time": "2025-03-16T09:19:20.645472Z"
    }
   },
   "cell_type": "code",
   "source": [
    "plt.plot(data['RM'], data['MEDV'], 'b.')\n",
    "plt.xlabel('RM')\n",
    "plt.ylabel('MEDV')\n",
    "plt.title('RM vs. MEDV')"
   ],
   "id": "d78ef75e0099e2a2",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'RM vs. MEDV')"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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kjhz5gwee+wx9O/f3+ymJI1jx47hyiuvRKdOncxuSlI5c+YMXnzxRTzzzDMYMGAAAODnP/85Dh8+zCAmDllZWcjKyvL/vHHjRoiiiHnz5pnYquTwv//7vzh06BCWLVuGHj16oEePHhg2bBjeffddBjFx+Pjjj3Hw4EG88cYbuPTSS9G3b1/ceeedePrppzUHMZxOShKPPvooioqKcPnll5vdlKRx7Ngx9OjRw+xmJJ3q6mrk5uZiyJAh/sdKSkqwYsUKE1uVXM6cOYNNmzZh7ty5yMjIMLs5tpeVlYV27drhpZdeQnNzM2pqanDgwAFcffXVZjfN1o4fP46LL74Yl156qf+xPn364OOPP0Zzc7OmYzCISQLvvvsuPvjgA9xzzz1mNyVpiKKIzz//HPv378eYMWNw880344knnkBTU5PZTbO948ePo2vXrtixYwfGjh2LkSNHYu3atfB6vWY3LWk8//zz6Ny5M8aOHWt2U5JCZmYmFi9ejC1btmDgwIEYN24cbrrpJkybNs3sptlaXl4evv/+ezQ0NPgfO3nyJFpaWvD9999rOgaDGJtrbGzEkiVLsHjxYtlQMsXH4/GgoaEBGRkZWLNmDebPn4+dO3fiscceM7tptldfX48vv/wSL7zwAlasWIH58+fjueeeY6KkTkRRxNatWzFjxgyzm5JUjh07hsLCQmzZsgUrVqzA3r178corr5jdLFsbOHAgOnfujGXLlvm/F5555hkA0DwSw5wYm3vqqafQr18/WUIfxa9r16547733cOGFF0IQBFx99dXwer341a9+hQULFsDpdJrdRNtKS0vD2bNnsXLlSnTt2hWAL2h8/vnn8fOf/9zk1tnfRx99hG+//RYTJkwwuylJ491338W2bdvw1ltvISsrC/3798e3336L9evXY9KkSWY3z7YyMzOxZs0a3H///cjPz0fHjh1x5513YsWKFcjNzdV0DAYxNrd7927U1tbC7XYDgH+649VXX8XBgwfNbJrtdejQQfZz79690djYiP/93//FxRdfbE6jkkCnTp2QmZnpD2AAoGfPnvjmm29MbFXyeOedd3DttdfiwgsvNLspSePjjz9G9+7dZaPdffv2xYYNG0xsVXIYMGAA9u3bh1OnTuGiiy7CX//6V1x00UXIycnR9HpOJ9ncc889h507d2LHjh3YsWMHRowYgREjRmDHjh1mN83W3nnnHVx33XWyudpPP/0UHTp0YAATp4EDB6KxsRGff/65/7GamhpZUEOx+/DDDzF48GCzm5FUOnfujC+//FKWE1dTU4Nu3bqZ2Cr7O3PmDG6//Xb8v//3/9CpUyekpaXhL3/5iyzpPxIGMTbXtWtXdO/e3f8vJycHOTk56N69u9lNszW3243MzEwsXLgQNTU1eOutt/DYY4/hzjvvNLtptterVy8MHz4cCxYswGeffYZ33nkHZWVluP32281uWlI4cuQIVynqbMSIEUhPT8fChQvx+eefY9++fdiwYQPuuOMOs5tmax06dEB9fT0ef/xxHD9+HFu3bsWLL74Y1fcsgxgiBbm5uXj66afx3XffYcqUKXjooYcwffp0BjE6eeKJJ3DZZZfh9ttvx/z581FcXMwbgk5qa2txwQUXmN2MpNK+fXs8++yzOHXqFKZOnYoVK1bg7rvvxvTp081umu2tXr0ax48fxy233II//vGPePLJJ/31o7QQRNb6JiIiIhviSAwRERHZEoMYIiIisiUGMURERGRLDGKIiIjIlhjEEBERkS0xiCEiIiJbYhBDREREtsQghogsZcSIEejTp4//31VXXYUhQ4bg7rvv9u+vJD2nqqoq5PVvv/02+vTpgwcffDDRTSeiBGMQQ0SW85vf/Ab79+/H/v378dZbb2H16tU4cuQI5s+f739Oeno69u3bF/LaN954A4IgJLK5RGQSBjFEZDnt27dHp06d0KlTJ1xyySW44YYbMHv2bLz33nv4/vvvAQDXXnttSBAjiiL27duHQYMGmdBqIko0BjFEZAsZGRkAAIfD97U1fPhwnDhxAseOHfM/59ChQ7jwwgvRo0cPM5pIRAnGIIaILO+rr75CWVkZhg0bhpycHADABRdcgPz8fNlozOuvv46bb77ZrGYSUYIxiCEiy1myZAncbjfcbjf69++PH/7wh+jduzcef/xx2fNGjhwpC2LefPNNBjFEKYRBDBFZzuzZs7Fjxw6Ul5fjxhtvRLdu3TB37lxcdNFFsueNHDkShw8fxnfffYejR4+isbER/fv3N6nVRJRoDGKIyHI6duyI7t27o2/fvnjyyScBAPfccw+am5tlz+vWrRsuv/xy/OUvf8Ebb7zBURiiFMMghogsLSMjA8uXL8enn36KZ599NuT3I0eOxF/+8hdOJRGlIAYxRGR5AwYMwNSpU7Fu3Tp8++23st+NHDkS77zzDo4fP46CggKTWkhEZmAQQ0S28MADDyA9PT0kubdfv3644IILMHz4cDidTpNaR0RmEERRFM1uBBEREVG0OBJDREREtsQghoiIiGyJQQwRERHZEoMYIiIisiUGMURERGRLDGKIiIjIlhjEEBERkS0xiCEiIiJbYhBDREREtsQghoiIiGyJQQwRERHZEoMYIiIisqX/D3i8SGPV0hQLAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 4
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "可以观察出 RM 与 MEDV 大致呈现正相关性",
   "id": "67c315692b84193c"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 3. 数据预处理",
   "id": "14a59db2f9e16cae"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:22.456979Z",
     "start_time": "2025-03-16T09:19:22.451955Z"
    }
   },
   "cell_type": "code",
   "source": [
    "np.random.seed(15)\n",
    "# 洗牌\n",
    "data_shuffle = np.random.permutation(data)\n",
    "data_shuffle"
   ],
   "id": "df16c77116d8255b",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[3.53700e-02, 3.40000e+01, 6.09000e+00, ..., 3.95750e+02,\n",
       "        9.50000e+00, 2.20000e+01],\n",
       "       [5.20140e-01, 2.00000e+01, 3.97000e+00, ..., 3.86860e+02,\n",
       "        5.91000e+00, 4.88000e+01],\n",
       "       [1.39140e-01, 0.00000e+00, 4.05000e+00, ..., 3.96900e+02,\n",
       "        1.46900e+01, 2.31000e+01],\n",
       "       ...,\n",
       "       [5.87205e+00, 0.00000e+00, 1.81000e+01, ..., 3.96900e+02,\n",
       "        1.93700e+01, 1.25000e+01],\n",
       "       [1.91330e-01, 2.20000e+01, 5.86000e+00, ..., 3.89130e+02,\n",
       "        1.84600e+01, 1.85000e+01],\n",
       "       [4.66883e+00, 0.00000e+00, 1.81000e+01, ..., 1.04800e+01,\n",
       "        1.90100e+01, 1.27000e+01]])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 5
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 3.1 选择高相关性特征\n",
    "选择 abs(correlation) >= 0.5 的特征值"
   ],
   "id": "7c51ad1c0bacca8c"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:24.152392Z",
     "start_time": "2025-03-16T09:19:24.146257Z"
    }
   },
   "cell_type": "code",
   "source": [
    "high_corr = correlation[correlation.abs() >= 0.5].index\n",
    "high_corr"
   ],
   "id": "e7abfaaa3af1fb8d",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['MEDV', 'RM', 'PTRATIO', 'LSTAT'], dtype='object')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 6
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:25.064835Z",
     "start_time": "2025-03-16T09:19:25.059378Z"
    }
   },
   "cell_type": "code",
   "source": [
    "m = len(data_shuffle)\n",
    "index = [i for i in range(len(names)) if names[i] in high_corr][:-1]\n",
    "high_corr_data = data_shuffle[:, index]\n",
    "high_corr_data[:10]"
   ],
   "id": "5af6a995e11ce70e",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 6.59 , 16.1  ,  9.5  ],\n",
       "       [ 8.398, 13.   ,  5.91 ],\n",
       "       [ 5.572, 16.6  , 14.69 ],\n",
       "       [ 6.03 , 21.   ,  7.88 ],\n",
       "       [ 6.715, 17.8  , 10.16 ],\n",
       "       [ 4.906, 20.2  , 34.77 ],\n",
       "       [ 5.404, 18.6  , 23.98 ],\n",
       "       [ 5.155, 20.2  , 20.08 ],\n",
       "       [ 6.606, 16.6  ,  7.37 ],\n",
       "       [ 5.593, 19.1  , 12.5  ]])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 7
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:25.535535Z",
     "start_time": "2025-03-16T09:19:25.531119Z"
    }
   },
   "cell_type": "code",
   "source": [
    "target = data_shuffle[:, -1].reshape(m, 1)\n",
    "target[:10]"
   ],
   "id": "92036a01edfda510",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[22. ],\n",
       "       [48.8],\n",
       "       [23.1],\n",
       "       [11.9],\n",
       "       [22.8],\n",
       "       [13.8],\n",
       "       [19.3],\n",
       "       [16.3],\n",
       "       [23.3],\n",
       "       [17.6]])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 8
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 3.2 标准化数据（提升模型收敛速度）",
   "id": "7c5f0fe82ce57c6a"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:26.917198Z",
     "start_time": "2025-03-16T09:19:26.793084Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler = StandardScaler()\n",
    "high_corr_data_scaler = scaler.fit_transform(high_corr_data)\n",
    "high_corr_data_scaler[:10]"
   ],
   "id": "d6eda513bf29b84c",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.43504177, -1.08911039, -0.4419768 ],\n",
       "       [ 3.01082466, -2.52243411, -0.94520069],\n",
       "       [-1.01526076, -0.85792914,  0.28552513],\n",
       "       [-0.36276709,  1.17646583, -0.66905833],\n",
       "       [ 0.6131241 , -0.30309415, -0.34946211],\n",
       "       [-1.96408344,  0.80657583,  3.1002147 ],\n",
       "       [-1.25460342,  0.06679585,  1.58773958],\n",
       "       [-1.60934343,  0.80657583,  1.04106182],\n",
       "       [ 0.45783631, -0.85792914, -0.74054696],\n",
       "       [-0.98534293,  0.29797709, -0.02145545]])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 9
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 4. 划分训练集与测试集",
   "id": "76188cf786add323"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:28.112783Z",
     "start_time": "2025-03-16T09:19:28.051309Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, y_train, y_test = train_test_split(high_corr_data_scaler, target, test_size=0.2, random_state=15)\n",
    "m1 = len(X_train)\n",
    "m2 = len(X_test)\n",
    "m1"
   ],
   "id": "f0ade156356522ab",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "404"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 10
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 5. 训练线性回归模型",
   "id": "f29e756e1c9c0bc8"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "#### 直接使用函数",
   "id": "7b597468fc41e90c"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:29.590499Z",
     "start_time": "2025-03-16T09:19:29.531451Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "model = LinearRegression()\n",
    "model.fit(X_train, y_train)"
   ],
   "id": "9ff4a9f8d9b92795",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression()"
      ],
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LinearRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LinearRegression</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.linear_model.LinearRegression.html\">?<span>Documentation for LinearRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>LinearRegression()</pre></div> </div></div></div></div>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 11
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:29.975343Z",
     "start_time": "2025-03-16T09:19:29.970627Z"
    }
   },
   "cell_type": "code",
   "source": "model.coef_",
   "id": "cf8766ed7d037705",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 3.02107557, -2.06516576, -4.20876286]])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 12
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:30.407381Z",
     "start_time": "2025-03-16T09:19:30.403320Z"
    }
   },
   "cell_type": "code",
   "source": "model.intercept_",
   "id": "e7432bd44c2cb8c1",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([22.63096568])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 13
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "#### 梯度下降",
   "id": "ede0926add461fe0"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "##### 数据量小，首先尝试批量梯度下降",
   "id": "d91ddf7eaa2fb394"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:32.027095Z",
     "start_time": "2025-03-16T09:19:31.966745Z"
    }
   },
   "cell_type": "code",
   "source": [
    "n_iterations = 10000\n",
    "alpha = 0.01\n",
    "theta = np.zeros((4, 1))\n",
    "X_train_bias = np.c_[np.ones((m1, 1)), X_train]\n",
    "\n",
    "for _ in range(n_iterations):\n",
    "    gradient = (1/m1) * X_train_bias.T @ (X_train_bias @ theta - y_train)\n",
    "    theta -= alpha * gradient\n",
    "theta"
   ],
   "id": "512bb83a042b2e52",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[22.63096568],\n",
       "       [ 3.02107557],\n",
       "       [-2.06516576],\n",
       "       [-4.20876286]])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 14
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "*梯度下降结果与函数计算结果基本一致*",
   "id": "27261cd2f593a89c"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 6. 模型评估",
   "id": "8713f0569a46e397"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 6.1 预测测试集",
   "id": "e4498222d2b5e1a3"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:33.650353Z",
     "start_time": "2025-03-16T09:19:33.647199Z"
    }
   },
   "cell_type": "code",
   "source": [
    "y_predict1 = model.predict(X_test)\n",
    "y_predict2 = np.c_[np.ones((m2, 1)), X_test] @ theta"
   ],
   "id": "35b651c2e691da40",
   "outputs": [],
   "execution_count": 15
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 6.2 计算指标",
   "id": "8639b7a46573fba8"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:34.613525Z",
     "start_time": "2025-03-16T09:19:34.609225Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.metrics import mean_squared_error\n",
    "np.sqrt(mean_squared_error(y_test, y_predict1))"
   ],
   "id": "f4e02b7de3199e7f",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(4.627424649641221)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 16
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:34.929526Z",
     "start_time": "2025-03-16T09:19:34.924242Z"
    }
   },
   "cell_type": "code",
   "source": "np.sqrt(mean_squared_error(y_test, y_predict2))",
   "id": "5f969d72b527b7fb",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(4.627424649641194)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 17
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:35.412979Z",
     "start_time": "2025-03-16T09:19:35.409432Z"
    }
   },
   "cell_type": "code",
   "source": "4.62 / (target.max() - target.min())",
   "id": "4682588ce090dbb4",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(0.10266666666666667)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 18
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "*RMSE 为 4.62 表示模型大约有 10% 的房价误差*",
   "id": "a6f3d22337198745"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:36.335957Z",
     "start_time": "2025-03-16T09:19:36.330980Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.metrics import r2_score\n",
    "r2_score(y_test, y_predict1)"
   ],
   "id": "423efa938d6060b8",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7053298549594789"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 19
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:36.784200Z",
     "start_time": "2025-03-16T09:19:36.780378Z"
    }
   },
   "cell_type": "code",
   "source": "r2_score(y_test, y_predict2)",
   "id": "895768c2c3472d35",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7053298549594824"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 20
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "*R² 为 0.705 表示模型能解释 70.5% 的房价变化*",
   "id": "58bc5338ab9599cf"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 6.3 可视化预测结果",
   "id": "24be9ef7e34d29e"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:38.187126Z",
     "start_time": "2025-03-16T09:19:38.040634Z"
    }
   },
   "cell_type": "code",
   "source": [
    "plt.plot(y_test, y_predict1, 'g.')\n",
    "plt.plot([0, 50], [0, 50], 'r--')\n",
    "plt.xlabel('True Prices')\n",
    "plt.ylabel('Predicted Prices')\n",
    "plt.title('True vs Predicted Prices')"
   ],
   "id": "8dd3c9d20ad77795",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'True vs Predicted Prices')"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 21
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "*点越接近红色虚线，预测越准确*",
   "id": "b5480e7a1e6a37a9"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 7. 实际应用：预测新数据",
   "id": "718fa448c19142e8"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:39.752014Z",
     "start_time": "2025-03-16T09:19:39.742878Z"
    }
   },
   "cell_type": "code",
   "source": "data[high_corr][:10]",
   "id": "b02b7f3dc8daf1ba",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   MEDV     RM  PTRATIO  LSTAT\n",
       "0  24.0  6.575     15.3   4.98\n",
       "1  21.6  6.421     17.8   9.14\n",
       "2  34.7  7.185     17.8   4.03\n",
       "3  33.4  6.998     18.7   2.94\n",
       "4  36.2  7.147     18.7   5.33\n",
       "5  28.7  6.430     18.7   5.21\n",
       "6  22.9  6.012     15.2  12.43\n",
       "7  27.1  6.172     15.2  19.15\n",
       "8  16.5  5.631     15.2  29.93\n",
       "9  18.9  6.004     15.2  17.10"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>MEDV</th>\n",
       "      <th>RM</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>LSTAT</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>24.0</td>\n",
       "      <td>6.575</td>\n",
       "      <td>15.3</td>\n",
       "      <td>4.98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>21.6</td>\n",
       "      <td>6.421</td>\n",
       "      <td>17.8</td>\n",
       "      <td>9.14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34.7</td>\n",
       "      <td>7.185</td>\n",
       "      <td>17.8</td>\n",
       "      <td>4.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>33.4</td>\n",
       "      <td>6.998</td>\n",
       "      <td>18.7</td>\n",
       "      <td>2.94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>36.2</td>\n",
       "      <td>7.147</td>\n",
       "      <td>18.7</td>\n",
       "      <td>5.33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>28.7</td>\n",
       "      <td>6.430</td>\n",
       "      <td>18.7</td>\n",
       "      <td>5.21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>22.9</td>\n",
       "      <td>6.012</td>\n",
       "      <td>15.2</td>\n",
       "      <td>12.43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>27.1</td>\n",
       "      <td>6.172</td>\n",
       "      <td>15.2</td>\n",
       "      <td>19.15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>16.5</td>\n",
       "      <td>5.631</td>\n",
       "      <td>15.2</td>\n",
       "      <td>29.93</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>18.9</td>\n",
       "      <td>6.004</td>\n",
       "      <td>15.2</td>\n",
       "      <td>17.10</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 22
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "- MEDV 房价\n",
    "- RM 房间数\n",
    "- PTRATIO 城镇中教师学生比例\n",
    "- LSTAT 地区有多少房东属于是低收入阶层"
   ],
   "id": "c1f84e7f3aa767c6"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:40.871440Z",
     "start_time": "2025-03-16T09:19:40.866553Z"
    }
   },
   "cell_type": "code",
   "source": [
    "new_data = scaler.transform([[7, 10, 5]])\n",
    "predicted_price = model.predict(new_data)\n",
    "print(f\"Predicted MEDV: ${predicted_price[0, 0] * 1000:.2f}\")"
   ],
   "id": "d807fbc8a94a3d9b",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predicted MEDV: $38298.70\n"
     ]
    }
   ],
   "execution_count": 23
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:41.320431Z",
     "start_time": "2025-03-16T09:19:41.316771Z"
    }
   },
   "cell_type": "code",
   "source": [
    "new_data = scaler.transform([[4, 20, 30]])\n",
    "predicted_price = model.predict(new_data)\n",
    "print(f\"Predicted MEDV: ${predicted_price[0, 0] * 1000:.2f}\")"
   ],
   "id": "7b7a9d6ec70c90ca",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predicted MEDV: $1089.19\n"
     ]
    }
   ],
   "execution_count": 24
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 8. 优化方向",
   "id": "a6c1f27a81df5de2"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:42.446675Z",
     "start_time": "2025-03-16T09:19:42.441061Z"
    }
   },
   "cell_type": "code",
   "source": "correlation",
   "id": "55d6bd5d726203a9",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "MEDV       1.000000\n",
       "RM         0.695360\n",
       "ZN         0.360445\n",
       "B          0.333461\n",
       "DIS        0.249929\n",
       "CHAS       0.175260\n",
       "AGE       -0.376955\n",
       "RAD       -0.381626\n",
       "CRIM      -0.388305\n",
       "NOX       -0.427321\n",
       "TAX       -0.468536\n",
       "INDUS     -0.483725\n",
       "PTRATIO   -0.507787\n",
       "LSTAT     -0.737663\n",
       "Name: MEDV, dtype: float64"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 25
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 8.1 增加更多特征\n",
    "选择 abs(correlation) >= 0.45 的特征值"
   ],
   "id": "934436bf474c146f"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:43.409879Z",
     "start_time": "2025-03-16T09:19:43.405233Z"
    }
   },
   "cell_type": "code",
   "source": [
    "high_corr2 = correlation[correlation.abs() >= 0.45].index\n",
    "high_corr2"
   ],
   "id": "eda16af82210bc83",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['MEDV', 'RM', 'TAX', 'INDUS', 'PTRATIO', 'LSTAT'], dtype='object')"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 26
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "***获取数据***",
   "id": "2cb53816b5cf2cf"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:44.413704Z",
     "start_time": "2025-03-16T09:19:44.406945Z"
    }
   },
   "cell_type": "code",
   "source": [
    "index = [i for i in range(len(names)) if names[i] in high_corr2][:-1]\n",
    "high_corr_data2 = data_shuffle[:, index]\n",
    "high_corr_data2[:10]"
   ],
   "id": "d8a57b18bc231458",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[  6.09 ,   6.59 , 329.   ,  16.1  ,   9.5  ],\n",
       "       [  3.97 ,   8.398, 264.   ,  13.   ,   5.91 ],\n",
       "       [  4.05 ,   5.572, 296.   ,  16.6  ,  14.69 ],\n",
       "       [ 11.93 ,   6.03 , 273.   ,  21.   ,   7.88 ],\n",
       "       [ 10.01 ,   6.715, 432.   ,  17.8  ,  10.16 ],\n",
       "       [ 18.1  ,   4.906, 666.   ,  20.2  ,  34.77 ],\n",
       "       [ 10.59 ,   5.404, 277.   ,  18.6  ,  23.98 ],\n",
       "       [ 18.1  ,   5.155, 666.   ,  20.2  ,  20.08 ],\n",
       "       [  4.93 ,   6.606, 300.   ,  16.6  ,   7.37 ],\n",
       "       [  5.86 ,   5.593, 330.   ,  19.1  ,  12.5  ]])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 27
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:44.940224Z",
     "start_time": "2025-03-16T09:19:44.933660Z"
    }
   },
   "cell_type": "code",
   "source": "target",
   "id": "1dd8ab1f1ad61e87",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[22. ],\n",
       "       [48.8],\n",
       "       [23.1],\n",
       "       [11.9],\n",
       "       [22.8],\n",
       "       [13.8],\n",
       "       [19.3],\n",
       "       [16.3],\n",
       "       [23.3],\n",
       "       [17.6],\n",
       "       [18.1],\n",
       "       [21.2],\n",
       "       [17.5],\n",
       "       [13.4],\n",
       "       [22. ],\n",
       "       [10.9],\n",
       "       [ 7.2],\n",
       "       [ 5. ],\n",
       "       [20.6],\n",
       "       [16.5],\n",
       "       [43.5],\n",
       "       [13.9],\n",
       "       [20.8],\n",
       "       [18. ],\n",
       "       [20.4],\n",
       "       [18.5],\n",
       "       [22. ],\n",
       "       [16.8],\n",
       "       [19.6],\n",
       "       [22.9],\n",
       "       [23.3],\n",
       "       [14.6],\n",
       "       [19.8],\n",
       "       [20.6],\n",
       "       [24.4],\n",
       "       [20.8],\n",
       "       [21.7],\n",
       "       [22.8],\n",
       "       [13.1],\n",
       "       [18.9],\n",
       "       [42.8],\n",
       "       [33.2],\n",
       "       [16.7],\n",
       "       [22.3],\n",
       "       [29.8],\n",
       "       [18.9],\n",
       "       [18.8],\n",
       "       [28.7],\n",
       "       [23.1],\n",
       "       [13.3],\n",
       "       [35.4],\n",
       "       [15.6],\n",
       "       [13.1],\n",
       "       [ 8.3],\n",
       "       [19.6],\n",
       "       [32.9],\n",
       "       [ 8.5],\n",
       "       [25. ],\n",
       "       [13.3],\n",
       "       [22. ],\n",
       "       [13.8],\n",
       "       [36.2],\n",
       "       [19.5],\n",
       "       [24.3],\n",
       "       [32. ],\n",
       "       [19.3],\n",
       "       [23.8],\n",
       "       [17.5],\n",
       "       [22.9],\n",
       "       [18.4],\n",
       "       [20.3],\n",
       "       [24.4],\n",
       "       [21.7],\n",
       "       [13.5],\n",
       "       [34.9],\n",
       "       [24.1],\n",
       "       [43.1],\n",
       "       [16.6],\n",
       "       [13.8],\n",
       "       [10.5],\n",
       "       [15.7],\n",
       "       [10.2],\n",
       "       [42.3],\n",
       "       [33. ],\n",
       "       [50. ],\n",
       "       [16.4],\n",
       "       [32.7],\n",
       "       [21.4],\n",
       "       [22.6],\n",
       "       [16.2],\n",
       "       [34.7],\n",
       "       [21.9],\n",
       "       [21.9],\n",
       "       [18.9],\n",
       "       [23.3],\n",
       "       [26.7],\n",
       "       [18.9],\n",
       "       [36.2],\n",
       "       [21.7],\n",
       "       [21.7],\n",
       "       [14.6],\n",
       "       [ 5.6],\n",
       "       [30.5],\n",
       "       [ 8.4],\n",
       "       [29.6],\n",
       "       [15.4],\n",
       "       [23.4],\n",
       "       [21.5],\n",
       "       [21.8],\n",
       "       [38.7],\n",
       "       [29.4],\n",
       "       [21.4],\n",
       "       [20.5],\n",
       "       [50. ],\n",
       "       [22.2],\n",
       "       [20.7],\n",
       "       [25. ],\n",
       "       [20.2],\n",
       "       [11.7],\n",
       "       [29. ],\n",
       "       [24.3],\n",
       "       [ 9.5],\n",
       "       [18.3],\n",
       "       [50. ],\n",
       "       [24.1],\n",
       "       [11.7],\n",
       "       [22. ],\n",
       "       [50. ],\n",
       "       [46.7],\n",
       "       [23.9],\n",
       "       [34.9],\n",
       "       [20.4],\n",
       "       [17.8],\n",
       "       [15.6],\n",
       "       [13.4],\n",
       "       [24.7],\n",
       "       [36.4],\n",
       "       [23.7],\n",
       "       [23.5],\n",
       "       [23.2],\n",
       "       [22.9],\n",
       "       [19.1],\n",
       "       [20.9],\n",
       "       [26.4],\n",
       "       [21.2],\n",
       "       [20.1],\n",
       "       [24.5],\n",
       "       [10.4],\n",
       "       [28.2],\n",
       "       [10.9],\n",
       "       [19.5],\n",
       "       [17.8],\n",
       "       [14.3],\n",
       "       [26.6],\n",
       "       [50. ],\n",
       "       [18.7],\n",
       "       [23.8],\n",
       "       [31.6],\n",
       "       [22.5],\n",
       "       [27.5],\n",
       "       [24.4],\n",
       "       [21.1],\n",
       "       [37. ],\n",
       "       [10.4],\n",
       "       [28. ],\n",
       "       [30.3],\n",
       "       [33.1],\n",
       "       [24. ],\n",
       "       [19.1],\n",
       "       [20.3],\n",
       "       [13.1],\n",
       "       [21.7],\n",
       "       [22.8],\n",
       "       [16.2],\n",
       "       [31.2],\n",
       "       [17.8],\n",
       "       [14.1],\n",
       "       [14.1],\n",
       "       [25. ],\n",
       "       [16.1],\n",
       "       [19.4],\n",
       "       [33.1],\n",
       "       [20.3],\n",
       "       [15.2],\n",
       "       [21.4],\n",
       "       [28.4],\n",
       "       [21. ],\n",
       "       [19.5],\n",
       "       [16.5],\n",
       "       [50. ],\n",
       "       [13.3],\n",
       "       [16. ],\n",
       "       [20.5],\n",
       "       [ 9.6],\n",
       "       [31.1],\n",
       "       [22. ],\n",
       "       [23.7],\n",
       "       [33.2],\n",
       "       [28.6],\n",
       "       [36. ],\n",
       "       [23.7],\n",
       "       [22.9],\n",
       "       [43.8],\n",
       "       [23.2],\n",
       "       [33.4],\n",
       "       [20. ],\n",
       "       [16.8],\n",
       "       [17. ],\n",
       "       [20.1],\n",
       "       [20.6],\n",
       "       [24.7],\n",
       "       [29.9],\n",
       "       [23. ],\n",
       "       [24.8],\n",
       "       [27.9],\n",
       "       [17.4],\n",
       "       [14.9],\n",
       "       [50. ],\n",
       "       [12.8],\n",
       "       [19.4],\n",
       "       [14.4],\n",
       "       [13.8],\n",
       "       [14.5],\n",
       "       [12. ],\n",
       "       [50. ],\n",
       "       [27.1],\n",
       "       [17.7],\n",
       "       [20.9],\n",
       "       [48.3],\n",
       "       [22.7],\n",
       "       [18.3],\n",
       "       [14.9],\n",
       "       [27.5],\n",
       "       [12.7],\n",
       "       [32. ],\n",
       "       [20.1],\n",
       "       [15.1],\n",
       "       [12.1],\n",
       "       [13.4],\n",
       "       [23.8],\n",
       "       [27.5],\n",
       "       [19.7],\n",
       "       [22.7],\n",
       "       [21.2],\n",
       "       [25.2],\n",
       "       [22.5],\n",
       "       [23.9],\n",
       "       [20. ],\n",
       "       [29.1],\n",
       "       [50. ],\n",
       "       [13.6],\n",
       "       [30.1],\n",
       "       [20.8],\n",
       "       [21.7],\n",
       "       [20.7],\n",
       "       [26.5],\n",
       "       [19.4],\n",
       "       [10.2],\n",
       "       [14.2],\n",
       "       [15.3],\n",
       "       [21.4],\n",
       "       [46. ],\n",
       "       [24.2],\n",
       "       [20.6],\n",
       "       [50. ],\n",
       "       [19.2],\n",
       "       [20. ],\n",
       "       [13.8],\n",
       "       [26.4],\n",
       "       [23. ],\n",
       "       [36.5],\n",
       "       [32.5],\n",
       "       [28.4],\n",
       "       [36.1],\n",
       "       [10.5],\n",
       "       [22.1],\n",
       "       [23.2],\n",
       "       [25. ],\n",
       "       [19.6],\n",
       "       [24.5],\n",
       "       [11.8],\n",
       "       [21.5],\n",
       "       [37.2],\n",
       "       [14.5],\n",
       "       [50. ],\n",
       "       [21.2],\n",
       "       [23.1],\n",
       "       [44. ],\n",
       "       [13.2],\n",
       "       [29.1],\n",
       "       [50. ],\n",
       "       [28.7],\n",
       "       [23.6],\n",
       "       [20.1],\n",
       "       [ 8.7],\n",
       "       [28.7],\n",
       "       [12.3],\n",
       "       [18.6],\n",
       "       [15.6],\n",
       "       [14. ],\n",
       "       [ 8.3],\n",
       "       [22.2],\n",
       "       [26.2],\n",
       "       [44.8],\n",
       "       [22.2],\n",
       "       [16.6],\n",
       "       [17.1],\n",
       "       [ 6.3],\n",
       "       [19. ],\n",
       "       [28.1],\n",
       "       [17.2],\n",
       "       [19.3],\n",
       "       [19.5],\n",
       "       [34.6],\n",
       "       [37.9],\n",
       "       [15. ],\n",
       "       [20.4],\n",
       "       [27.1],\n",
       "       [13.9],\n",
       "       [35.1],\n",
       "       [18.5],\n",
       "       [15.2],\n",
       "       [24.4],\n",
       "       [11.8],\n",
       "       [28.5],\n",
       "       [24.7],\n",
       "       [11. ],\n",
       "       [21.6],\n",
       "       [24.3],\n",
       "       [18.2],\n",
       "       [11.5],\n",
       "       [35.4],\n",
       "       [24.5],\n",
       "       [27.5],\n",
       "       [29.6],\n",
       "       [35.2],\n",
       "       [ 8.1],\n",
       "       [13.6],\n",
       "       [23.3],\n",
       "       [31.6],\n",
       "       [30.1],\n",
       "       [22.8],\n",
       "       [23.9],\n",
       "       [50. ],\n",
       "       [21. ],\n",
       "       [17.4],\n",
       "       [24.1],\n",
       "       [23.1],\n",
       "       [14.4],\n",
       "       [ 9.7],\n",
       "       [ 7.2],\n",
       "       [30.1],\n",
       "       [20.6],\n",
       "       [12.7],\n",
       "       [25. ],\n",
       "       [24. ],\n",
       "       [18.7],\n",
       "       [23. ],\n",
       "       [ 8.4],\n",
       "       [13.4],\n",
       "       [22.4],\n",
       "       [14.8],\n",
       "       [29.8],\n",
       "       [25. ],\n",
       "       [20. ],\n",
       "       [19.9],\n",
       "       [22.5],\n",
       "       [ 7.4],\n",
       "       [19.8],\n",
       "       [22.2],\n",
       "       [19.1],\n",
       "       [19.7],\n",
       "       [29. ],\n",
       "       [21.2],\n",
       "       [ 5. ],\n",
       "       [17.4],\n",
       "       [17.8],\n",
       "       [25. ],\n",
       "       [17.8],\n",
       "       [27.9],\n",
       "       [16.7],\n",
       "       [18.5],\n",
       "       [13.5],\n",
       "       [50. ],\n",
       "       [16.1],\n",
       "       [27. ],\n",
       "       [17.3],\n",
       "       [19.8],\n",
       "       [15.4],\n",
       "       [ 8.5],\n",
       "       [22.3],\n",
       "       [19.9],\n",
       "       [39.8],\n",
       "       [17.2],\n",
       "       [31.7],\n",
       "       [24.8],\n",
       "       [18.2],\n",
       "       [37.3],\n",
       "       [50. ],\n",
       "       [20. ],\n",
       "       [11.9],\n",
       "       [18.8],\n",
       "       [22.6],\n",
       "       [24.6],\n",
       "       [18.4],\n",
       "       [22.6],\n",
       "       [18.7],\n",
       "       [32.2],\n",
       "       [16.1],\n",
       "       [23. ],\n",
       "       [19.3],\n",
       "       [22.6],\n",
       "       [23.1],\n",
       "       [ 7. ],\n",
       "       [17.2],\n",
       "       [32.4],\n",
       "       [22.2],\n",
       "       [37.6],\n",
       "       [19.6],\n",
       "       [19.1],\n",
       "       [20.5],\n",
       "       [23.9],\n",
       "       [25.3],\n",
       "       [17.1],\n",
       "       [25.1],\n",
       "       [19.2],\n",
       "       [24.8],\n",
       "       [21.8],\n",
       "       [11.3],\n",
       "       [21.9],\n",
       "       [23.6],\n",
       "       [19.4],\n",
       "       [21. ],\n",
       "       [23.4],\n",
       "       [22.4],\n",
       "       [25. ],\n",
       "       [22. ],\n",
       "       [14.3],\n",
       "       [19. ],\n",
       "       [19.3],\n",
       "       [45.4],\n",
       "       [23.7],\n",
       "       [23.2],\n",
       "       [31.5],\n",
       "       [10.2],\n",
       "       [19.4],\n",
       "       [31. ],\n",
       "       [33.8],\n",
       "       [20.6],\n",
       "       [17.9],\n",
       "       [19.6],\n",
       "       [20.1],\n",
       "       [12.6],\n",
       "       [15.2],\n",
       "       [23.8],\n",
       "       [20.2],\n",
       "       [26.6],\n",
       "       [14.9],\n",
       "       [20.3],\n",
       "       [41.7],\n",
       "       [13. ],\n",
       "       [33.4],\n",
       "       [17.1],\n",
       "       [ 8.8],\n",
       "       [15. ],\n",
       "       [23.1],\n",
       "       [21.4],\n",
       "       [ 7. ],\n",
       "       [21.6],\n",
       "       [24.6],\n",
       "       [50. ],\n",
       "       [19.4],\n",
       "       [19.9],\n",
       "       [18.6],\n",
       "       [21.1],\n",
       "       [41.3],\n",
       "       [10.8],\n",
       "       [22.6],\n",
       "       [24.8],\n",
       "       [18.2],\n",
       "       [23.9],\n",
       "       [30.8],\n",
       "       [19.9],\n",
       "       [33.3],\n",
       "       [15.6],\n",
       "       [30.7],\n",
       "       [23.1],\n",
       "       [ 7.5],\n",
       "       [14.5],\n",
       "       [ 7.2],\n",
       "       [31.5],\n",
       "       [17.5],\n",
       "       [21.7],\n",
       "       [14.1],\n",
       "       [20.4],\n",
       "       [26.6],\n",
       "       [48.5],\n",
       "       [34.9],\n",
       "       [15.6],\n",
       "       [13.1],\n",
       "       [ 8.8],\n",
       "       [15. ],\n",
       "       [18.4],\n",
       "       [12.5],\n",
       "       [18.5],\n",
       "       [12.7]])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 28
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "***查看线性关系***",
   "id": "38311e54fb617ac3"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:46.965006Z",
     "start_time": "2025-03-16T09:19:46.366871Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import seaborn as sns\n",
    "data_index = high_corr2.drop('MEDV')\n",
    "matrix = sns.pairplot(data[high_corr2], x_vars=data_index, y_vars=['MEDV'], plot_kws={'alpha': 0.6})\n",
    "plt.suptitle('Scatter matrix', y=1.04)"
   ],
   "id": "120966800cee1cec",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.04, 'Scatter matrix')"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1250x250 with 5 Axes>"
      ],
      "image/png": "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wzNeIxaLcc899/Dwww8jSRLt7e1cccUVAKVQ0Goo3us1r3lNxe+HhoZK/9/n81V9Xb/fP+0zj8cz4+8vpD3VPtddd93Fj3/8Yzo6Oujs7KzqbwQCgUAgEAjWAsJ4JhAIBAKBYM0zNDTE61//ej784Q+Xco0V2bVrFx/5yEf4wAc+QG9vL8FgECgYlCYzNjbG0aNHueyyy/joRz9KV1cX//f//l8uu+wyVFUlm83yne98Z17PVbzXv/zLv1Q0QrW0tMzregtlsdozE9lsls985jNs27aNEydO8E//9E+z5m0TCAQCgUAgWEuIggECgUAgEAjWPPX19TgcDv793/8dTdOmfd/V1YXL5aK9vZ1NmzZRV1fHT3/607LffP/73+c973kPhmHwzDPPcMstt3D11VeXwg9//vOfA5SqeU5NnA8gy+WqVdG7a2xsjN27d5f+xWIx/u7v/q7kmbbULLQ91fK5z32OwcFBvvCFL/D2t7+dv//7v+f06dMX/uACgUAgEAgEqwDheSYQCAQCgWDNoygKn/zkJ/nABz7A61//et72trexefNmstksjz32GN/61rf48Ic/TE1NDQC/+7u/y6c+9SnC4TAHDhygu7ubv//7v+dtb3sbNTU17Nmzh4MHD3LJJZfQ1NTEs88+y9e//nUkSSKbzQIQCAQAePzxx9m8eTN79+4teZr94Ac/YO/evWzfvp3Xvva1/J//83/o6+vj0ksvpbu7m7/927+ltbWVjo6OZemfhbanGp588kn+7d/+jY985CN0dHTwe7/3ezz00EN87GMf4957770go5xAIBAIBALBakAYzwQCgUAgEKwLbrjhBr7zne/wjW98g69+9avEYjFUVWXXrl387d/+Lbfcckvpt29729vwer184xvf4Nvf/jZNTU389m//Nr/9278NwGc/+1k+/elP8+lPfxqAjo4O/uzP/oz//u//5umnnwYKecd+8zd/k29/+9v87Gc/47HHHuOWW27h+9//Ph/72Mf49V//dT75yU/ymc98hq997Wvce++9DA4OEg6Huf322/m93/u9ZTMsLbQ9c5HJZPj4xz/Otm3bSsUWfD4ff/qnf8r73vc+/vEf/5H3vve9S9cwgUAgEAgEgmVAsueT9VYgEAgEAoFAIBAIBAKBQCC4iBA5zwQCgUAgEAgEAoFAIBAIBIIZEMYzgUAgEAgE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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 29
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "*较为明显的是 RM 存在线性关系，而 LSTAT 存在非线性关系*  \n",
    "***做线性与多项式进一步对比确认***"
   ],
   "id": "91a7de1e25f868b"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 8.2 尝试线性关系",
   "id": "eaac4c2992cd648"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "***标准化***",
   "id": "9c6842c6c969a0fa"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:48.857736Z",
     "start_time": "2025-03-16T09:19:48.852606Z"
    }
   },
   "cell_type": "code",
   "source": [
    "scaler2 = StandardScaler()\n",
    "high_corr_data_scaler2 = scaler2.fit_transform(high_corr_data2)\n",
    "high_corr_data_scaler2[:10]"
   ],
   "id": "57f9457ac02e9fd2",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.73637217,  0.43504177, -0.47061187, -1.08911039, -0.4419768 ],\n",
       "       [-1.04569998,  3.01082466, -0.85666526, -2.52243411, -0.94520069],\n",
       "       [-1.03402724, -1.01526076, -0.66660821, -0.85792914,  0.28552513],\n",
       "       [ 0.11573841, -0.36276709, -0.80321172,  1.17646583, -0.66905833],\n",
       "       [-0.16440754,  0.6131241 ,  0.14113426, -0.30309415, -0.34946211],\n",
       "       [ 1.01599907, -1.96408344,  1.53092646,  0.80657583,  3.1002147 ],\n",
       "       [-0.07978012, -1.25460342, -0.77945458,  0.06679585,  1.58773958],\n",
       "       [ 1.01599907, -1.60934343,  1.53092646,  0.80657583,  1.04106182],\n",
       "       [-0.90562701,  0.45783631, -0.64285108, -0.85792914, -0.74054696],\n",
       "       [-0.76993132, -0.98534293, -0.46467259,  0.29797709, -0.02145545]])"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 30
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "***切分数据集***",
   "id": "5cfbcda97845bc9b"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:50.199334Z",
     "start_time": "2025-03-16T09:19:50.192860Z"
    }
   },
   "cell_type": "code",
   "source": [
    "X_train2, X_test2, y_train2, y_test2 = train_test_split(high_corr_data_scaler2, target, test_size=0.2, random_state=15)\n",
    "m1 = len(X_train2)\n",
    "m2 = len(X_test2)\n",
    "m1"
   ],
   "id": "ca1b7c8fca64124a",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "404"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 31
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "***直接使用函数***",
   "id": "93190819baf8c110"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:51.107409Z",
     "start_time": "2025-03-16T09:19:51.100988Z"
    }
   },
   "cell_type": "code",
   "source": [
    "model2 = LinearRegression()\n",
    "model2.fit(X_train2, y_train2)"
   ],
   "id": "95cdd4c2f58291c3",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression()"
      ],
      "text/html": [
       "<style>#sk-container-id-2 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-2 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-2 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-2 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-2 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-2 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LinearRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LinearRegression</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.linear_model.LinearRegression.html\">?<span>Documentation for LinearRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>LinearRegression()</pre></div> </div></div></div></div>"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 32
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:51.706543Z",
     "start_time": "2025-03-16T09:19:51.701774Z"
    }
   },
   "cell_type": "code",
   "source": "model2.coef_",
   "id": "7a2f5ea3c52acb60",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.32281134,  3.07383714, -0.44500618, -1.9863877 , -4.16123877]])"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 33
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:52.466693Z",
     "start_time": "2025-03-16T09:19:52.462661Z"
    }
   },
   "cell_type": "code",
   "source": "model2.intercept_",
   "id": "b3f246f49324026a",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([22.62824151])"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 34
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "***梯度下降***",
   "id": "31f8dc6920154588"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:53.682616Z",
     "start_time": "2025-03-16T09:19:53.610659Z"
    }
   },
   "cell_type": "code",
   "source": [
    "theta_add = np.zeros((6, 1))\n",
    "X_train2_bias = np.c_[np.ones((m1, 1)), X_train2]\n",
    "\n",
    "for _ in range(n_iterations):\n",
    "    gradient = (1/m1) * X_train2_bias.T @ (X_train2_bias @ theta_add - y_train2)\n",
    "    theta_add -= alpha * gradient\n",
    "theta_add"
   ],
   "id": "738cd3fc87fe7ffe",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[22.62824151],\n",
       "       [ 0.32281134],\n",
       "       [ 3.07383714],\n",
       "       [-0.44500618],\n",
       "       [-1.9863877 ],\n",
       "       [-4.16123877]])"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 35
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "*函数与梯度下降仍然基本一致*",
   "id": "35821b7d32521c52"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "***模型评估***",
   "id": "b38af3d89f05daa"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:55.754957Z",
     "start_time": "2025-03-16T09:19:55.750096Z"
    }
   },
   "cell_type": "code",
   "source": [
    "y_predict1_add = model2.predict(X_test2)\n",
    "y_predict2_add = np.c_[np.ones((m2, 1)), X_test2] @ theta_add"
   ],
   "id": "32e8bd53ecc5572",
   "outputs": [],
   "execution_count": 36
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:56.673367Z",
     "start_time": "2025-03-16T09:19:56.667628Z"
    }
   },
   "cell_type": "code",
   "source": "np.sqrt(mean_squared_error(y_test2, y_predict1_add))",
   "id": "c31e23ad18bb95e4",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(4.590826961735109)"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 37
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:57.351020Z",
     "start_time": "2025-03-16T09:19:57.345476Z"
    }
   },
   "cell_type": "code",
   "source": "np.sqrt(mean_squared_error(y_test2, y_predict2_add))",
   "id": "2ec3301daa819070",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(4.5908269617351465)"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 38
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:57.816832Z",
     "start_time": "2025-03-16T09:19:57.811828Z"
    }
   },
   "cell_type": "code",
   "source": "4.59 / (target.max() - target.min())",
   "id": "c84922acb54f8528",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(0.102)"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 39
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "*大约 10% 的房价误差，相较于未增加特征项时降低极少*",
   "id": "42202aa55bfc2761"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:58.971590Z",
     "start_time": "2025-03-16T09:19:58.966876Z"
    }
   },
   "cell_type": "code",
   "source": "r2_score(y_test2, y_predict1_add)",
   "id": "398b314590af8f10",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7099724374890547"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 40
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:19:59.456777Z",
     "start_time": "2025-03-16T09:19:59.451729Z"
    }
   },
   "cell_type": "code",
   "source": "r2_score(y_test2, y_predict2_add)",
   "id": "b2b96017615d2",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.70997243748905"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 41
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "*能解释 71% 的房价变化，相较于未增加特征项时只增加了 0.5%*",
   "id": "b0d0c998bc43bc6d"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 8.3 尝试非线性关系",
   "id": "48cc0b8fc6d3c192"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "***多项式回归***",
   "id": "1d1c000c0bf4fbf3"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "*重新构建数据*",
   "id": "a9c56f515446d1e0"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:04.283707Z",
     "start_time": "2025-03-16T09:20:04.279726Z"
    }
   },
   "cell_type": "code",
   "source": "X_train3, X_test3, y_train3, y_test3 = train_test_split(high_corr_data2, target, test_size=0.2, random_state=15)",
   "id": "20c393fd5c6bc869",
   "outputs": [],
   "execution_count": 42
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:06.771858Z",
     "start_time": "2025-03-16T09:20:06.152834Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "pipeline = Pipeline([\n",
    "    # 当include_bias=True 时可用在梯度下降中，自动增加一列全为 1 项\n",
    "    ('PolynomialFeatures', PolynomialFeatures(degree=3, include_bias=False)), \n",
    "    ('StandardScaler', StandardScaler()), \n",
    "    ('LinearRegression', LinearRegression())\n",
    "])\n",
    "pipeline.fit(X_train3, y_train3)"
   ],
   "id": "e44eef8e8e04b562",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Pipeline(steps=[('PolynomialFeatures',\n",
       "                 PolynomialFeatures(degree=3, include_bias=False)),\n",
       "                ('StandardScaler', StandardScaler()),\n",
       "                ('LinearRegression', LinearRegression())])"
      ],
      "text/html": [
       "<style>#sk-container-id-3 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-3 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-3 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-3 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-3 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-3 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-3 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-3 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-3 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-3 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-3 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-3 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-3 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-3 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-3 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-3 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-3\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[(&#x27;PolynomialFeatures&#x27;,\n",
       "                 PolynomialFeatures(degree=3, include_bias=False)),\n",
       "                (&#x27;StandardScaler&#x27;, StandardScaler()),\n",
       "                (&#x27;LinearRegression&#x27;, LinearRegression())])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" ><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>Pipeline</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>Pipeline(steps=[(&#x27;PolynomialFeatures&#x27;,\n",
       "                 PolynomialFeatures(degree=3, include_bias=False)),\n",
       "                (&#x27;StandardScaler&#x27;, StandardScaler()),\n",
       "                (&#x27;LinearRegression&#x27;, LinearRegression())])</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" ><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>PolynomialFeatures</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.preprocessing.PolynomialFeatures.html\">?<span>Documentation for PolynomialFeatures</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>PolynomialFeatures(degree=3, include_bias=False)</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-5\" type=\"checkbox\" ><label for=\"sk-estimator-id-5\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-6\" type=\"checkbox\" ><label for=\"sk-estimator-id-6\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LinearRegression</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.linear_model.LinearRegression.html\">?<span>Documentation for LinearRegression</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>LinearRegression()</pre></div> </div></div></div></div></div></div>"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 43
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:06.896684Z",
     "start_time": "2025-03-16T09:20:06.890682Z"
    }
   },
   "cell_type": "code",
   "source": [
    "y_predict3 = pipeline.predict(X_test3)\n",
    "np.sqrt(mean_squared_error(y_test3, y_predict3))"
   ],
   "id": "76aa3ca23abc1e1a",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(3.251317099856098)"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 44
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:08.505268Z",
     "start_time": "2025-03-16T09:20:08.500760Z"
    }
   },
   "cell_type": "code",
   "source": "3.25 / (target.max() - target.min())",
   "id": "545981fec54cce61",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(0.07222222222222222)"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 45
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "*房价误差大约为 7% ，相较于未增加特征项时降低了 3%*\n",
    "\n",
    "***相较于增加特征项后的线性降低了 2.5%***"
   ],
   "id": "4fd9b2fae967d402"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:11.220405Z",
     "start_time": "2025-03-16T09:20:11.215342Z"
    }
   },
   "cell_type": "code",
   "source": "r2_score(y_test3, y_predict3)",
   "id": "dca40d977351a894",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8545291147106131"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 46
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "*能解释 85.5% 的房价变化，相较于未增加特征项时提升了 15%*\n",
    "\n",
    "***相较于增加特征项后的线性提升了 14.5%***"
   ],
   "id": "e6071896db5d71b3"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "***增加多项式特征提升了模型的复杂度，使其更贴合训练数据的结构，从而降低了RMSE并提高了R²***",
   "id": "2fa053fa6bff77b"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 8.4 分析误差来源",
   "id": "4af013c264aeeb4a"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:15.293803Z",
     "start_time": "2025-03-16T09:20:15.015719Z"
    }
   },
   "cell_type": "code",
   "source": [
    "plt.figure(figsize=(14, 6))\n",
    "\n",
    "plt.subplot(121)\n",
    "residuals1 = y_test2 - y_predict1_add\n",
    "plt.plot(y_predict1_add, residuals1, 'b.')\n",
    "plt.axhline(y=0, color='r', linestyle='--')\n",
    "plt.xlabel('Predicted Values')\n",
    "plt.ylabel('Residuals')\n",
    "plt.title('Linear')\n",
    "plt.axis((-5, 50, -15, 15))\n",
    "\n",
    "plt.subplot(122)\n",
    "residuals2 = y_test3 - y_predict3\n",
    "plt.plot(y_predict3, residuals2, 'b.')\n",
    "plt.axhline(y=0, color='r', linestyle='--')\n",
    "plt.xlabel('Predicted Values')\n",
    "plt.title('Polynomial')\n",
    "plt.axis((-5, 50, -15, 15))"
   ],
   "id": "907ed39ec080a288",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(np.float64(-5.0), np.float64(50.0), np.float64(-15.0), np.float64(15.0))"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1400x600 with 2 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABI0AAAIhCAYAAADDxkqbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABuUUlEQVR4nO3de3xT9f3H8fdJWlpaEBSYI+CwRWFeuLSoqLBpEecNFYG5zYpjY+K8MSdsKIpOQZ0I3hFE8TLpHD9FvMx5nc6JU9SiOBXU0qJglIFXLFDa5vz+qI1Nk6ZJes7JOcnr+Xjw0J6eJN98k5588vl+v5+vYZqmKQAAAAAAAKAFX7obAAAAAAAAAPchaQQAAAAAAIAoJI0AAAAAAAAQhaQRAAAAAAAAopA0AgAAAAAAQBSSRgAAAAAAAIhC0ggAAAAAAABRSBoBAAAAAAAgCkkjAAAAAAAARCFpBCBtJk6cqIkTJ7b5+4suukijRo1ysEUAAAD2mDhxogYOHBjx78ADD9SRRx6pK664Ql999VXC9+XFGGngwIG65ZZbEj5/06ZNGjhwoB566CEbWwWgPTnpbgAAtOWcc87RGWecke5mAAAAWGL//ffX5ZdfHv65vr5e77zzjq6//nqtXbtW999/vwzDSGML7bNs2TJ9//vfT3czACSJpBEA1/rBD36Q7iYAAABYpkuXLho6dGjEsYMPPli1tbW6+eabtWbNmqjfZ4pMfV5ApmN5GgDXaj31etSoUbr55pt17bXX6vDDD9fgwYM1efJkbdiwIeJ2r7/+uk4//XQNGTJEhxxyiGbMmKHPP/884pzXXntNkydP1sEHH6wDDzxQo0aN0i233KJQKCTpuynRd999t4499lgNGTJEy5cvt/05AwCA7HPggQdKkoLBoCTpH//4h8aNG6eSkhKNGDFCl112WZvL16699loNHjxY27Ztizh+2223adiwYdqxY4duueUWHX300frXv/6lE088UQceeKCOOeYYPfzwwxG3+d///qeLL75YRxxxhAYPHqwJEybon//8Z8Q5AwcO1P3336+LLrpIw4YN0yGHHKI5c+Zo586duvbaa3XooYdq+PDhuuSSS1RXVxdxu5bL09atW6fzzjtPhx56qA444AD96Ec/Ct8PAPcgaQTAU/7yl7+ourpa11xzjebMmaO3335bM2bMCP/+tdde06RJk5Sfn68bb7xRM2fO1KuvvqozzjgjHISsW7dOkyZNUvfu3XXDDTdo4cKFOuigg3TrrbfqiSeeiHi8W265RWeeeabmzp2rESNGOPpcAQBAdqipqZEk7bXXXrrtttt04YUXaujQobr55pt17rnn6qmnntLEiRNjJlQmTJiguro6PfnkkxHHH3nkER1//PHq3LmzJGnLli268sordcYZZ2jx4sXq27evZsyYofXr10uStm7dqgkTJuj111/X73//e91yyy3q06ePzj33XD366KMR933dddepU6dOuvXWWzV27Fjdd999Gjt2rD755BPNmzdPEydO1IMPPqj77rsv5vP93//+p/Lycu3YsUN//vOfdccdd+iEE07Qfffdp7/85S8d7k8A1mF5GgBP2W233XTbbbfJ7/dLkj766CPdcsst+uKLL7T77rtr/vz5Kioq0u233x4+Z8iQITrhhBO0fPlylZeXa926dTr88MN13XXXyedryp2PGDFCzz33nFatWqUTTjgh/HjHHXecxo8f7/wTBQAAGcc0TTU0NIR//uqrr/Tqq69q4cKFKikp0Q9+8AMtXLhQp556qi677LLweQMGDFB5eXk4lmmpf//+Kikp0SOPPKKf/vSnkqTVq1drw4YN+vOf/xw+b8eOHbrqqqt02GGHSZL23ntvlZWV6YUXXlD//v1199136/PPP9dTTz2lPn36SJKOOOIITZo0SXPnztWYMWPCcdM+++yjK6+8UpJ0yCGH6IEHHlB9fb3mzZunnJwcjRw5Uk899ZRWr14dsx/ef/997bfffrrpppvUpUsXSdLhhx+ul156SatWrdKUKVM61M8ArEPSCICnDBo0KJwMkhQuqLhjxw7l5+drzZo1mjx5ckRQttdee6l///566aWXVF5errFjx2rs2LGqq6tTTU2NPvzwQ61du1aNjY2qr6+PeLz99tvPuScHAAAy2muvvaYDDjgg4pjP59Phhx+uK6+8Um+++aZ27dqlMWPGRJxz0EEHqU+fPnr11VejkkaSNH78eM2aNUsff/yx+vTpoxUrVqioqEglJSUR57WsK9QcQ23fvl2S9Oqrr6qkpCScMGp20kkn6eKLL1Z1dbX22WcfSYq4X7/fr913310HHHCAcnK++3rZvXv3qCVzzUaOHKmRI0eqvr5eVVVV+vDDD/X+++/r888/V/fu3WPeBkB6kDQC4CnNU6ybNY94hUIhff311wqFQrrjjjt0xx13RN02Ly9PkrRz507Nnj1bjzzyiBoaGtS3b1+VlJQoJydHpmlG3KagoMCmZwIAALLNAQccoCuuuEKSZBiG8vLy1Lt37/Bsm8rKSklSz549o27bs2fPNpMwxx9/vK6++mo98sgjmjx5sp544omYs3VaxlHNMVRz7PPVV19pr732ivm4kvT111+HjzW3t6VkYqZQKKTrr79eFRUV2r59u3r37q3BgweHYzUA7kHSCEDGKCwslGEYmjRpUsQSs2bNgdJVV12lp556SjfeeKMOP/zwcJDTPF0bAADADoWFhRo0aFCbv+/WrZukpvpCxcXFEb/bsmVLzKRO8/0ee+yxeuKJJzRgwABt375dJ598clJt69atm7Zs2RJ1vPnY7rvvntT9xbN48WLdc889uuKKK/STn/xEXbt2ldRUnwmAu1AIG0DG6NKli/bff39VV1dr0KBB4X/77ruvbrnlFq1atUpS0yje8OHDNXr06HDC6O2339bnn38e3j0NAADAaUOGDFGnTp3097//PeL466+/rmAwqNLS0jZvO2HCBL3//vu69957dfjhh2vPPfdM6rEPPvhgvfHGG/r4448jjj/66KPq1auX+vXrl9T9xVNZWal99tlH48ePDyeMNm/erPfff59YDHAZZhoBSKtPP/1U99xzT9TxAQMGpHR/F154oaZMmaJp06bppJNOUmNjo+666y6tWbNG55xzjiRp8ODBeuKJJ3T//ferf//+WrdunRYuXCjDMLRjx46OPB0AAICUde/eXVOmTNGCBQuUm5ursrIybdq0STfddJP22WcfnXLKKW3edtiwYSoqKtKrr76qG264IenH/tWvfqVHH31UkyZN0nnnnafu3bvr4Ycf1iuvvKKrr746vJzNCoMHD9Ztt92mxYsXa+jQofrwww91++23a9euXcRigMuQNAKQVh999JGuueaaqOOpTk8eOXKklixZoltvvVVTp05Vbm6uDjjgAN19993h4o8XXXSR6uvrdeONN2rXrl3q27evzj77bFVVVem5555TY2NjR54SAABAys4//3z17NlTS5cu1bJly9S9e3cde+yxuuCCC9qtG3TkkUfq888/1+jRo5N+3F69eun+++/X/PnzNWfOHNXX1+uHP/yhbrvtNh111FGpPp2YzjrrLH3xxRf6y1/+ogULFqh37946+eSTZRiGbr/99oj6SQDSyzBbV30FAAAAAHiKaZo64YQTNHLkSM2cOTPdzQGQIZhpBAAAAAAe9c033+iee+7Rf//7X23cuFETJ05Md5MAZBCSRgAAAADgUfn5+frb3/6mUCikq6++us0d1gAgFZ7YPW3Xrl0aM2ZMeOcjSZozZ44GDhwY8W/p0qVpbCUAAIB7ED8B2SEnJ0crV67Uf/7zH5144onpbg6ADOP6mUZ1dXWaNm2aPvjgg4jj69ev17Rp0yJ2EOjSpYvTzQMAAHAd4icAAGAFV880qqqq0qmnnqqPPvoo6nfr16/X/vvvr169eoX/de7cOQ2tBAAAcA/iJwAAYBVXJ41effVVDR8+XMuWLYs4/s0332jz5s3ae++909MwAAAAlyJ+AgAAVnH18rTTTjst5vH169fLMAwtWrRI//73v9W9e3f96le/iphqDQAAkI2InwAAgFVcnTRqS3V1tQzDUHFxsU4//XS99tprmjVrlrp06aKjjz463c0DAABwHeInAACQLE8mjcaOHauysjJ1795dkvTDH/5QGzZs0P3335900PP559tkmjY00gaGIe2xR1dPtdlr6GNn0M/OoJ/tRx87o7mf0THET95ps9fQx86gn51BP9uPPnaGVfGTJ5NGhmGEA55mxcXFeuWVV5K+r1BInnmjGkbTf73UZq+hj51BPzuDfrYffewMn6srMHoH8ZN32uw19LEz6Gdn0M/2o4+dYVX85Mkw7KabbtKkSZMijq1bt07FxcXpaRAAAIDLET8BAIBkeTJpVFZWptdee01LlizRRx99pL/+9a96+OGH9etf/zrdTQMAAHAl4icAAJAsTyaNBg8erJtuukmPPPKIxowZo/vuu0/z589XSUlJupsGAADgSsRPAAAgWZ6pafTee+9F/Dx69GiNHj06Ta0BAABwP+InAADQEZ6caQQAAAAAAAB7kTQCAAAAAABAFJJGAAAAAAAAiELSCAAAAAAAAFFIGgEAAAAAACAKSSMAAAAAAABEIWkEAAAAAACAKCSNAAAAAAAAEIWkEQAAAAAAAKKQNAIAAAAAAEAUkkYAAAAAAACIQtIIAAAAAAAAUUgaAQAAAAAAIApJIwAAAAAAAEQhaQQAAAAAAIAoJI0AAAAAAAAQhaQRAAAAAAAAopA0AgAAAAAAQBSSRgAAAAAAAIhC0ggAAAAAAABRSBoBAAAAAAAgCkkjAAAAAAAARCFpBAAAAAAAgCgkjQAAAAAAABCFpBEAAAAAAACikDQCAAAAAABAFJJGAAAAAAAAiELSCAAAAAAAAFFIGgEAAAAAACAKSSMAAAAAAABEIWkEAAAAAACAKCSNAAAAAAAAEIWkEQAAAAAAAKKQNAIAAAAAAEAUkkZZLBg0tHKlX8Ggke6mAAAAAAAAlyFplKUqKnJVWlqoceMKVFpaqIqK3HQ3CQAAAAAAuAhJoywUDBqaNi1PoVDTDKNQyND06XnMOAIAAAAAAGEkjbJQdbUvnDBq1thoqKaGtwMAAAAAAGhCliALFReH5POZEcf8flNFRaE0tQhAtqPGGgAAAOA+JI2yUCBgav78Ovn9TYkjv9/UvHl1CgTMdm4JANajxhoAAADgTjnpbgDSo7y8XmVlDaqp8amoKETCCEBatFVjraysgesSAAAAkGYkjbJYIGAqEGhMdzMAZLF4Nda4PgEAAADpxfI0AEDaUGMNAAAAcC+SRgCAtKHGGgAAAOBeLE8DAKQVNdYAAAAAdyJpBABIO2qsAQAAAO7D8jQAAAAAAABEIWkEAAAAAACAKCSNAAAAAAAAEIWkEQAAAAAAAKKQNAIAIIZg0NDKlX4Fg0a6mwIAAACkBUkjAABaqajIVWlpocaNK1BpaaEqKnLT3SQAAADAcSSNAABoIRg0NG1ankKhphlGoZCh6dPzmHEEAACArEPSCACAFqqrfeGEUbPGRkM1NXxkAgAAILsQAQMA0EJxcUg+nxlxzO83VVQUSlOLAAAAgPQgaQQAQAuBgKn58+vk9zcljvx+U/Pm1SkQMNu5JQAAAJBZctLdAAAA3Ka8vF5lZQ2qqfGpqChEwggAAABZiaQRAAAxBAKmAoHGdDcDAAAASBuWpwEAAAAAACAKSSMAAAAAAABEIWkEAAAAAACAKCSNAAAAAAAAEIWkEQAAAAAAAKKQNAIAAAAAAEAUkkYAAAAAAACI4omk0a5duzRmzBitWrUqfGzjxo2aNGmShg4dquOPP14rV65MYwsBAADchfgJAAB0lOuTRnV1dbrwwgv1wQcfhI+Zpqlzzz1XPXv21PLly3XyySfrvPPOUzAYTGNLAQAA3IH4CQAAWCEn3Q2Ip6qqStOmTZNpmhHHX3nlFW3cuFF/+9vfVFBQoP79++vll1/W8uXLdf7556eptQAAAOlH/AQAAKzi6plGr776qoYPH65ly5ZFHF+zZo32339/FRQUhI8NGzZMb775psMtBLJLMGho5Uq/gkEj3U0BALSB+AkAAFjF1TONTjvttJjHt2zZou9973sRx3r06KFPP/006ccwPPTdt7mtXmqz19DHbVu6NFfTpuUpFDLk85maP79Op59en9J90c/OoJ/tRx87g/5NDvFTJP5O7UcfO4N+dgb9bD/62BlW9a+rk0Zt2bFjhzp16hRxrFOnTtq1a1fS99WjR1ermuUYL7bZa+jjSJs2SdOmSaFQ08+hkKHp0/M1YUK++vZN/X7pZ2fQz/ajj+EFxE/ea7PX0MfOoJ+dQT/bjz72Bk8mjfLy8vTll19GHNu1a5fy8/OTvq/PPtumVkv+Xcswmv6wvNRmr6GPY3v9db9CoYKIY42NUmXlduXnNyZ9f/SzM+hn+9HHzvD5pD32ILDsKOIn77TZa9LZx8Ggoepqn4qLQwoEMvsF5r3sDPrZfvSxM6yKnzyZNNpzzz1VVVUVcWzr1q1RU64TYZry3BvVi232Gvo4UlFRSD6fqVDouzmOfr+pvfcOdaif6Gdn0M/2o4/tRd9ag/jJe232Gqf7uKIieul8eXlqS+e9hPeyM+hn+9HH9rKqb11dCLstQ4YM0TvvvKOdO3eGj1VWVmrIkCFpbBWQuQKBpkDM72+68vj9pubNq8v4ET0AyCTET8gkwaARThhJzUvn89isAwAs5smk0SGHHKLevXvr4osv1gcffKDFixfrrbfe0oQJE9LdNCBjlZfXq7KyVitWbFdlZW1WjOQBQCYhfkImqa72RcyAlqTGRkM1NZ78egMAruXJq6rf79dtt92mLVu2aNy4cXr00Ue1YMECBQKBdDcNyGiBgKkRIxqZYQQAHkT8hExSXNy0dL4lv99UUVEoTS0CgMzkmZpG7733XsTP/fr109KlS9PUGgAAAPcjfkKmal46P316nhobDZbOA4BNPJM0AgAAAIBm5eX1KitrUE2NT0VFmb97GgCkA0kjAAAAAJ4UCJgKBBrT3QwAyFierGkEAAAAAAAAe5E0AgAAAAAAQBSSRgAAAAAAAIhC0ggAAAAAAEQJBg2tXOlXMGikuylIE5JGAAAAAAAgQkVFrkpLCzVuXIFKSwtVUZGb7iYhDUgaAQAAAACAsGDQ0LRpeQqFmmYYhUKGpk/PY8ZRFiJpBAAAAAAAwqqrfeGEUbPGRkM1NaQQsg2vOADANVg3DwAAkH7FxSH5fGbEMb/fVFFRKE0tQrqQNAIAuALr5gEAANwhEDA1f36d/P6mxJHfb2revDoFAmY7t0SmyUl3AwAAaGvdfFlZA8EJAABAGpSX16usrEE1NT4VFYWIybIUSSMAQNrFWzcfCDSmqVUAAADZLRAwicWyHMvTAABpx7p5AAAAwH1IGgEA0o518wAAAID7sDwNAOAKdq+bDwYNVVf7VFzMmnwAAAAgESSNAACuYde6+YqK3HChbZ+vaVZTeXm95Y8DAIDbMGgCoCNYnpZmwaChlSv9CgaN9k8GACStrZ3ZuO4CADJdRUWuSksLNW5cgUpLC1VRkZvuJgHwGJJGacRFHADsF29nNgAAMhWDJgCsQMScJlzEAcAZ7MwGAMhGDJoAsAJXjDThIg4AzmBnNgBANmLQBIAVKISdJs0X8ZaJIy7iAGAPu3dmAwDAbZoHTaZPz1Njo8GgCYCUkDRKEy7iAOAsu3ZmAwDArRg0AdBRJI3SiIs4AAAAADsxaAKgI0gapRkXcQAAAAAA4EZUXQYAAAAAAEAUkkYAAAAAAACIQtIIAAAAAAAAUUgaAQAAAAAAIApJIwBA1gkGDa1c6VcwaKS7KQAAAIBrkTQCAGSViopclZYWaty4ApWWFqqiIjfdTQIAAABciaQRACBrBIOGpk3LUyjUNMMoFDI0fXoeM44AAACAGEgaAQAc4YYlYdXVvnDCqFljo6GaGj4OAQAAgNaIkgEAtnPLkrDi4pB8PjPimN9vqqgolJb2AAAAAG5G0gjIEm6Y5YHs5KYlYYGAqfnz6+T3NyWO/H5T8+bVKRAw27klAAAAkH1y0t0AAParqMgNf2n3+Zq+NJeX16e7WcgS8ZaEBQKNjrenvLxeZWUNqqnxqagoRMIIAAAAaAMzjYAM56ZZHshOblwSFgiYGjGikYQRAAAAEAdJIyDDUfgX6caSMAAAAMCbWJ4GWwWDhqqrfSouZglIujTP8miZOEr3LA9kH6uWhHFNAQAAAJzDVAPYxi27JWU7ZnnALTq6JIxrCgAAAOAskkawBXV03KW8vF6VlbVasWK7Kitr01IEm93b0BFcUwAAAADnkTSCLaij4z7pLPzbeobI0qXMEEFyuKYAAAAAziPahi3cuFsS0qOtGSKbNqW5YfAUrikAEB8zegEAdiBpBFtQRwfN2pohUlWVpgbBk7imAEDbqPkGALALu6fBNlbtlgRva2v3tn32YSQUyeGaAgDR2prRW1bWwHUSANBhzDSCrdJZRwfu0NYMkb5909wweBLXFACIRM03AICdmGkEwHatZ4j06WNKyk93swAA8Ly2ZvRS8w0AYAWGIAA4ghkiAABYj5pvAAA7MdMIAAAA8DBqvgEA7ELSCAAAAPC4QMBUINCY7mYAADIMy9MAAAAAAAAQhaQRAAAAAAAAopA0AgAAAAAAQBSSRgAAAAAAAIhC0ggAAAAAAABRSBoBAAAAAAAgCkkjAAAAAAAARCFpBAAAAAAAgCgkjQAAAAAAABCFpBEAtBAMGlq50q9g0Eh3UwAAAAAgrUgaAcC3KipyVVpaqHHjClRaWqiKitx0NwkAAAAA0oakEQCoaYbRtGl5CoWaZhiFQoamT89jxhEAAACArEXSCAAkVVf7wgmjZo2NhmpquEwCAAAAyE58GwIAScXFIfl8ZsQxv99UUVEoTS0CAAAAgPQiaQQAkgIBU/Pn18nvb0oc+f2m5s2rUyBgtnNLAAAAAMhMOeluQEc888wzOu+88yKOHXPMMbr55pvT1CIAXlZeXq+ysgbV1PhUVBQiYQQgIxE/AQCARHk6aVRVVaWysjLNnj07fCwvLy+NLQLgdYGAqUCgMd3NAADbED8BAIBEeTpptH79eg0YMEC9evVKd1MAAAA8gfgJAAAkytM1jdavX6+999473c0AAADwDOInAACQKM/ONDJNUzU1NVq5cqVuv/12NTY26thjj9XUqVPVqVOnhO/HMNo/xy2a2+qlNnsNfewM+tkZ9LP96GNn0L/WIX6CHehjZzjZz8Ggoepqn4qLs6/GI+9n+9HHzrCqfz2bNAoGg9qxY4c6deqkG2+8UZs2bdKcOXO0c+dOXXrppQnfT48eXW1spT282GavoY+dQT87g362H30MryB+gp2s7uNNm6QPPpD23Vfq29fSu/Y0u9/LS5ZIU6ZIoZDk80mLF0uTJ9v6kK7ENcN+9LE3GKZpejZ1/OWXX6pbt24yvk2hPfXUU/rDH/6gN954Q36/P6H7+OyzbfJKDxhG0x+Wl9rsNfSxvZpHrfr3D2nQoC70s814P9uPPnaGzyftsQeBpVWIn2A1O/p46dJcTZuWp1DIkM9nav78Op1+er01d+5RTryXg0FDJSWFCoW+m6Lg95tavbo2a2Yccc2wH33sDKviJ8/ONJKk7t27R/zcv39/1dXV6auvvtIee+yR0H2Ypjz3RvVim72GPrZeRUVk8Ld4sXTyyfSzE3g/248+thd9ay3iJ9jFqj4OBo1wzCBJoZCh6dPzVFbWkDWJi3jsfC+vX++LSBhJUmNj06Bf797Ztbss1wz70cf2sqpvPVsI+8UXX9Tw4cO1Y8eO8LG1a9eqe/fuCQc8AJwRK/g766ym4wAA5xA/wQuqq2MnLmpqPPvVxTOKi0Py+SK/afr9poqKQmlqEYB08+yVt6SkRHl5ebr00ktVXV2tF154QXPnztVvfvObdDcNQCuxgz8R/AGAw4if4AUkLuILBg2tXOm3ZfAtEGhaCuj3N/W/329q3rw6ZngBWcyz39i6dOmiJUuW6PPPP9f48eN1ySWX6Gc/+xlBD+BCsYM/EfwBgMOIn+AFJC7atmSJVFJSqHHjClRaWqiKilzLH6O8vF6VlbVasWK7KitrVV6e3bWkgGzn6ULYVti61TvFtwxD6tmzq6fa7DX0sX0qKnI1fXqeGhsN+f2mbr/d0Mkn08924v1sP/rYGT4fO6y4jZfe8/yd2s+uPg4Gm5akFRVl37bvsXzyiaGSki4KtRhz8/tNVVZmT5FqJ3DNsB997Ayr4idPF8IG4B3l5fUqK2tQTY1PxcUhDR7cRVu3prtVAADArQIBU4FAdhVfjqdpuX/kseZaT/QTALuQNALgmObgz6D+NQAAQFLefDO6sgi1ngDYzbM1jQAgG9lZ/BIAALhTMGho9uy8VkdNXXoptZ4A2IukEQB4REVFrkpL7S1+CQAA3CfWTrSSoaFDmWUEb2Dg07tIGgGABwSDhqZNywsHjKGQoenT8/jgBQAgC8TeiZalafCG1gOfS5cy8OklJI0AwANijTA2F78EAACZLRAwNX9+nfz+pp99PlPz5rE0De7X1sDnpk1pbhgSxrcNAPAARhgBAEDz7mlsUw6vaGvgs6oqTQ1C0kgaAYAHfDfC2BQl+v2MMAIAkC2aZ2s0J4tMk2Xq8Ia2Bj732SdNDULSSBoBgEeUl9ersrJWK1ZsV2VlrcrL69PdJAAAYKG2igWzTB1e1dbAZ9++aW4YEpaT7gYAABIXCJgKBBrT3QwAAGCxiorccO0Xn6/pi3bzAFHzbI2WiSOWqcMrysvrVVbWoJoan4qKQurTx5SUn+5m2SYYNFRd7VNxcSgjVgWQmgYAAACANGpvl9TWhbBZpg6vCQRMjRjRmPHv2dY7xVVUeH+nOJJGAAAAAJBGiSw/O/30em3YID38MMvUATdqL/nrVSxPAwAAAIA0SnT5Wd++Un5+I7unAS4UL/nr5fISzDQCAAAAgDRil1TA+9raKc7rtceYaQQAAAAAada6WLBVCaNMK8oLuFVz8nf69Dw1NhoZk/wlaQQAAAAALmD1LqnxdmQDYD27kr/pxPI0AAAAAMgwmVqUF3C7TNspjqQRAAAAAGSYRHZkA4D2cMUAAAAAgDQJBg2tXOm3fAZQphblBeAskkYAHBcMGnr+eTE9GgAAZLWKilyVlhZq3LgClZYWqqIi17L7Zkc2uI1dCVLYi6QREAMXNPtUVOSqpKRQo0ZJJSXWBkcAAABe4UTNofLyelVW1mrFiu2qrKylCDbSpmWCtKSkUEuWpLtFSBRJI6CVJUuakhl2jPhkOwoyAgAANHGq5lCmFeWF98T6DnDWWaw68AqSRkALwaChKVNEUsMmFGQEAABoQs2h2Jjxn3lifwcQ3wE8glcJaKHpghZ5zKtJDTd+4BIcAQAANLGr5pAbY8BE2VnjCekT+zuA+A7gEd77JgzYqOmCFnnMi0kNt37gUpARAADgO1bXHHJrDJgIyhhkrljfAW6/XXwH8AiSRkALgYCpxYvl6aSG3R+4HR29Ki+v1+rVtXr+eWn1agoyAgCQibw828VpVtUc8nrShTIGma1lgnT16lpNnpzuFiFROeluAOA2kydLBx9cq+pqn4qKQp5KGEnxP3ADgcYO3XdFRW44GPH5mkYMUkn6BAKmBg+Wtm41ZXqrewEAQDusiheQHDtjQCc0L2Fq+Ry8OOMfbQsETAUCjTK8kcfEt0jbAjF4eZcJu+oGuXX0ipFMAADcw63xgl3cFId4vXYkZQwAdyJpBGQYuz5w3Thl2Mvr9gEAyERujBfs4rY4JBOSLlbXeALQcSxPAzJQeXm9ysoaVFNj3RI7t00Zbmsks6yswVPBEQAAmcRt8YJd3BaHBIOGqqt9KitrUGWltTGg05qXMMF7mt+HxcXefO8htsxL+QOQZP0SO7eNXmXTSCYAAF7htnjBLm6KQ1rPeHr++RzPllmAd7lt5h2sw0wjAAmzYwZTqrJlJBMAAK9xU7xgF7fEIW6b8YTsxPswszEkDyApbikSni0jmQAAeJFb4gW7uCUOcdOMJ2Qv3oeZjZlGADwrG0YyAQCAO7khDnHLjCdkN96HmY3UH4CUuWGb2UwfyQQAAO5lZxySSJxl1YwnN8R08C63zLyDPZhpBCAlFRW54bXLPl/TB0V726I276jQv39IPXs61FAAAACPiRVnnX567DirozOeUonpsh27hEVzw8w72IOZRgCS1laxu3ijUy13VCgpKdSSJU61FgAAwDtSibNSnfGUymNluwULclVSwi5hsbACIDORNAKQtGSL3cUKSM46SwQkAAAArThZVDgTChg7ubRuwYJcXXFFnkyTJBuyh3euBgBco7nYXUvxit3FDkjkqYAEAADACbHiLJ/P1JYthjZtsv+xvFTAuOVMdrtn/QSDhq68Mk+St5NsQLJ4dwNIWrLF7mIHJPJMQAIAAOCU1nGWYZgyTenMMzurXz9p6VLrEiNeLmDs9NK66mpfeIZRSz6fd5JsQCpIGsG12MXB3crL61VZWasVK7arsrI2bsHEWAHJ7bfLEwEJAACA05rjrDvu2CFJLZZDyfLESDIxnZs4vbQu1iCoZGrWLG8k2YBUsXsaXIldHLwhEDAVCDQmdG7LHRWKi0MaPLiLtm61uYEAAAAeFQiY6tHDjJrd0pwYSTQGS/SxrLw/JzQncVomjuxcWtc8CDp9ep4aG5u+o8yaVadzz+U7CjIbM43gOuzikLnYUQEAANgtk2are7XmkBOvQTqW1rWclbV6dS0JI2SFlJNG69ev17Zt2yRJL774oq644go98MADljUM2SsTdnFAcjIpuAMAAOnjZGFkJ0QnRuT6mkNOvgbpWFrHICiyTUrfwpctW6aTTjpJa9eu1bvvvquzzz5bGzdu1E033aSbbrrJ6jYiy3h1RAWpybTgDgAApEemzlZvTow8/PB2bdggnX66e2e3pOM1IIkD2CulpNGdd96pa6+9VocccoiWL1+u/fbbT3feeaduuOEGZhuhw7y8iwOSk6nBHQAAcF4mz1ZvToz07ev8YyczIzyTXwMgW6VUCHvz5s0aNmyYJOn555/Xz372M0nS97//fdXW1lrXOmStlkWTi4pCJIwyVLzAwmvFGAEAQHo5XRg5GyS7OY3bXoNg0FB1ddMmLHyfAFKTUsq3uLhYjz32mB588EEFg0GNHj1a9fX1uuuuu/TDH/7Q6jYiSzHV1N2sqEPEUkQAAGAVr81Wd3tNx1RmhLvpNUilBELza7JpkwMNBDwipZlGM2bM0AUXXKCvvvpKp512mvr3768rr7xSzzzzjBYtWmR1GwHPy7RRjmRHneL57W93adGiTgqFDNcHdwAAeE2mxSDt8cpsdStjKbukOiPcDa9BWwmvsrKGNtsT+ZpI8+fnuu41AdLBME0zpb/iUCikbdu2qVu3bpKkrVu3qlu3bsrN9VYR261btym1HnCeYUg9e3b1VJu9xo4+9kJQkIxg0FBpaWHUtOPKytqEgwLDkB55pKumTGmavmwYps45p15nnrnLtcGdF3HNsB997AyfT+rRo2u6m4EWvPSez+a/U6diELf0sVcSZKnGUk73sxUxX7qsXOnXuHEFUcdXrNiuESOiE15efq5e5JZrRqazKn5KeKbRa6+9lvCdHnzwwSk1Bsg0qYxyuJ0VdYiCQUNTpih8P6ZpaNGiXJ155q64t/FCIAgAgBtkYgwSj5sG6dqLWbxS07F5qdn06XlqbIycEe72uCzZ2kpeeU2AdEg4aTRx4sSEzjMMQ2vXrk25QUAmycQPICsKHDb1S+SxeP3ipkAQAAAvyMQYpC1uSpAlErO4rVh0PLGWmnkhLouX8IrFS68J4LSEk0br1q2zsx1ARsrED6BkP4RjaeoXRSSO2uoXNwWCAAB4RSbGIG1xS4Is0ZjFiliq+fGcmO0TCJjhfvRSXJZMbaXo10TU2QS+lVIhbElqaGjQZ599psbGpguIaZratWuX1q5dq+OPP96yBgJeZlVQ4DYdLXAYCJhavFg66yyz3X5xSyCYzdw+BR0AEC1TY5BY3JIgSyZm6WgslcxsHys/x70Wl7VMeLWn+TXZsMGnYcMKlJ9fT70dQCkmjZ599lnNmjVLX375ZdTvevXqRdIIaMENO0jYIZkP4VgmT5YOPrhW1dXx+8UtgWC28sIUdABAbJkag7TmlgRZsjFLqrFUMrN9rP4cz/S4LBAw1adPo3r2lLZuTXdrAHfwpXKj+fPn6+ijj9bjjz+u3XbbTX/729+0aNEi9enTRxdccIHFTQS8LxAwNWJEY8YGa6lKpF+aA0G/v+kcOwPBYNDQypV+BYNG+yd7ULLPL1ZQOm1anh55JCdj+wgAMk22xCDl5fWqrKzVihXbVVlZm5YBDqdilnizfVpqK7nUkc9wJ+MyAO6Q0kyjjRs36vbbb9cPfvADHXjggdqyZYtGjx4tn8+nuXPnaty4cVa3E0AM2bJsyImR0kyfUZPK84sVlIZChs48s3NG9hEAwF52xy0dnQVtBSdilkRn+9i1lCxbZrABaJLSTKPddttNO3bskCQVFRWFi2QXFxdr06ZN1rUOQJsqKnJVWlqoceMKVFpaqIqK3HQ3yVZ2jpTaMRLnJqk+v+agNJZM6yMAgL2yKW6xe3ZXorN9Yn2OW7WULFtmsAFIMWl0xBFH6IorrlBVVZWGDx+uRx55RO+8846WLVum733ve1a3EUArmZ7kcFqi07y9KtXn1zoobS2T+ggAYB/iFuuVl9frH//Yriuv3Kl//GN7zJm/LCUDYIWUov1LLrlE/fr109tvv63Ro0dryJAhmjBhgioqKjRjxgyr2wiglUxPcjjNzpE4N+jI82uuEXHHHTsyuo8AAPZxW9ySCTUMKypyddxxBbrssnwdd1xBmzO3rK71lAl9ByA5KV2pu3TpomuuuUZjx46VYRiaN2+eXnvtNb3yyisaNWqU1W0E0EqmJzmclukjcR19foGAqZNPbsjoPgIA2MdNcUsmLJNLduZWvKVkySSBMqHvACQvpULYDz/8cNzfjx07NpW7BZAgt2wtm0kyvaijFc8v0/sIAGAPt8QtyWxV72ZWFbhOZpOMTOk7AMlLKWl08803R/zc2Niozz77TDk5ORo8eDBJI8ABfIG3nht2XbGTFc8v0/sIAGAPN8Qtdu0m5rREd0+LJ9kkUKb0HYDkpZQ0eu6556KO1dbW6rLLLtPAgQM73CgAifHSF/iW2+z26UOCy+3s3hYZAJB90h23WJFscYNYM7cuvbRO1dU+SYl9biebBCouDskwTJmmt/sOQPIsqz5XWFio888/X3fffbdVdwkgQ7ReA790qTvWwFPMMTZqFgAAMpEbahhaFXu0LHB96aV1mj07L/y5/ac/dWr3/pOtM/X885FzDQyD0ghAtrB0y4J169YpFHIu21xXV6eZM2fqoIMO0siRI3XXXXc59thAJrMymdLW9OdNmzp81x1CYiQ2tkUGMh/xE7KZ1buJJcOO2GPLFkOzZ0d+bt92W55KSuLffzIJtObYoOUsI8OQysoa2m0fA3TIFpn8Xk9pedrEiRNlGJGdUVtbq/fee0+TJk2yol0JmTt3rt5++23de++9CgaDmjFjhgKBgI499ljH2gBkmmSKIiairenPVVXSgQd2tLWpoZhj26hZAGQ+4idku3Qsk7M69mgZr8Vimu3ff6J1pmLFBqFQ+7GB1TFlJqEMQGbJ9Pd6Skmj4cOHRx3r1KmTpk+frsMOO6zDjUrE9u3b9cADD+iOO+7QAQccoAMOOEAffPCBKioqCHqAFNmRTGmrfsA++6QvC09ipG2ZUu8BQGzET0B6WBl7tI7X2pLI/SeSQEslNmCArm2ZnmDINtnwXk8paXTeeedZ3Y6krVu3Tg0NDSopKQkfGzZsmBYtWqRQKCSfL8GVd7XbJTPGi+n3S/n5Lc6rbfs+fD6pc+fUzt3exuNLTfM+Cwoiz631Nd1/65u0PnfHDineUsHCwtTO3blTaozzwZLMuQUFTe2WpLo6qSHOFNdkzu3cuamfJWnXLqk+zkW49bkN9VLnNvo4P7/pfZHI/bY8t76+6fy25OVJOTnJn9vQ0NQXbenUScrNTerc6mqfFAqpQDu/+12j9NHaHQp0+/a1zM1tOl9qen137oy+v2a5uQoEOmn+/Dr9YVquOoV2yu8zdfVVdeq7e762bm3Rzy3vNxRqel+2JSenqS+kpr+f7duTOnef3oa6GCGFWhZz9JkqDuyUlPfdbeP9Lbv1GtHyXEPfvZ+V2DUi0E266eo6XXDJHuHimjdc/aUC3eqktpqdTdeI1ue27OO8zL9GSEro7z6Za0RCf/c+Q+rRte37QcKIn9o5l/ip6f+Jn5I/t53rXf+9Osnn69yUKFCj8rVTPsNU/+/XSrWtOq2ta+O3nzkfvrtD+d9+Qa1XrurV6dtfh9RZ311H/b5W959i/BToHdJNV3+umTPz1BgywrFcoFt9U2wQ4+/+w3f94TaGNUofvrdLgUBuxLlt8lD8FNbONeLTTw3NurBQ+WajtqswnGAYdfg36v29OH+fXr9GZHD89OG7DTHf6x+t3aFAL39mxE9mgi666KKE/znhySefNA8//PCIY1VVVeaAAQPMzz77LPE76trVNJsuExH/6kb/xNyy5evwv1BBQczzTMncdfjIiHMbe/Ro+9yhJRHnNuz1gzbPrR/4w4hz6wf+sM1zG/b6QcS5u4aWtHluY48ekecePrLNc0MFBRHn1o3+SZvnmlLEuTtPHBv/3A2fhM/d8bPT4p67dW11+Nztv/pN3HM/q/xv+Nzac6fGPffzF1d9d+4fLop77hdPPx8+95vLZ8c998uHHw+fu+3P8+KfW/F/5pYtX5tr1mwzK89fFPfcr+68N3y/X915b9xzv755YfjcLyv+L+652/48L9yGI/Vc3HO/uXx2+H6/ePr5uOfW/uGi8Lnrlr8a/9xzp4bP/azyv3HP3f6r34TP3bq2Ou65O3522nfvyw2fxD1354ljI97D8c7N9GvEmjXbzIcfrjXXrNnGNcIl14gtW742v755Ydxz7b5GbNnytfnlw4/HPTfVa8TnL65q+9yuXS2NIbIZ8VPHro3ET+65Nv7nkuXmmjXbPHVtvOGGHaZhhMyD1E5MlOi1UTLnaropmabPFzKnjX8v7rluiJ+++hHXCFMyv1FBxKFPhh0Tt9+4RjT9I35q+ud0/JTSTKMdO3boySef1KBBgzRo0CDl5ubq3Xff1erVqzV27NiOZ7ISbEOn5uzat5p/3hUvi5igTp1y1LNnYlm53Fx/5Lmt6j1FnJvT6lxf2+fm+H2R5/rbHv3z+4zIc3P8bZ7rM1qdm9v2uYYUeW6n+G+ZiHPzEji3OWueH78QYI8eXaTm++7cKe65e+yR+Lm771743bkFeXHP7d69xbmF8c/t1q3gu3O75Ld77pJHumrKFGliKE/3xDl3t906f3e/u3WOc6bUtWu+ujaf260g7rlduuSrS8+u3ya04091LizMU2Hz/XYvjHtuQUGeCr49t+fA+G0o6NwpfK6+6RL33M6dO6lz87lmnCy8pPz8XOWH3w/xR9Dz8nKUl+DffaZfIwYP7qLBg5sbxTVCUlqvEeFzu8Y/1+5rRCLnpnqN0O7xz4U1iJ8iET99x2vXxjlX5enJa7po8WJpskeujRMm5OvCC+OeJin5a6PfL91+u6HJR3WSlrd9nhvip9265nz3WrQjk68REY/hl7p1i38u14gmxE9NnI6fDNM0zWRvdMEFF2ifffaJWqZ255136uWXX9aSJUssa2BbnnjiCc2ZM0cvvfRS+Nj69et1/PHHa9WqVerevXtC9/PZR5sVswtcOL3a2LFdPfboos8+2xZ9E6ZXf6cDUyeNhnr16NE1dh/bNL06+Fm+Sg7uplDIUI7q1Um75PeZeumlWvXu3aoRNk+vXrnSr/Gn5ClfkYHEsr9t16GHprY8LdbUScNQdD87uDytTcn83bvwGtH6XMOQdu7sqtWrt2vvIlO9+7e4X64RTf/fwenVEe9lj0+vdvPyNJ/P0B577dn2/SBhxE/xz+Xa6O746ZNPDB1+eKFCpqE65alROfL7Ta1e9aUCPeNcw1xybVz5amedckpBeHlaM59h6j//aRH3JRg/ffKJoZpNedp7QE5T7RQXxk+ffGLoww996tcv1PT8XHiNiBU/hfvZ4uVpkvS3v+Vq5sw8bQt1Ce9ad/qEbRl9jciG+Cnqvd76XA/HTynNNPrXv/6lCy64IOr4UUcdpVtuuaWjbUrInnvuqS+++EINDQ3K+fYF3rJli/Lz87XbbrslfD9mQUGb15OINdkF7WTwUj23c/yMY9S5hYUyd4Rit7nlsfz4GdKUz82Ln6VN6tyW53fKa/pn9bm5nZr+JXpup06J9XEy95uT2/SvDetX+8OF0xqUqwblSiFp/ac+fb9/jA+E5vv150gF7fwJJ3luUVFI8vm0PfTde9jvN7XXD02ZBWbEuZIknz/x97vh++5cQ7H7Oda57d2vDJvOlTvOTfIa0XI3juefz9G0afkKhQqjCy1yjWiS7DWi9bmt38s2XCNSPteGa4Sk5P7uU71GtD4lwTI7aB/xUzvncm1s4tL4qeoTv74xI1/7xkZD1Rvz1PsHNlzvLL42FhWFZBimQqZf29XiXDNG3JdA/PT9/k3/JLOp310YP33XxhanuPEa0VJbn+1SSteI1jul/ezX0o+OlWpqtod3rTOV4deILIifYr7XW/7g4fgppbspKirS8uWRcx9N01RFRYUGDhxoScPas99++yknJ0dvvvlm+FhlZaUGDRqUeBFHwAWad6RoKV27VQUCTYkFv98Mt2PevLqMqfyf6SoqclVaWqhx4wpUWlqoCy/MCw9wNRdaDAbTt2sdgPQjfoKXuSlmSkUgYOqyy+rU6iulJ55DMGho5Uo/cUSSWsdmFRVNiYtAwNSIEY3E2PCElKKDSy65RPfff7+OOeYYTZ06VVOnTtXo0aP1xBNP6IorrrC6jTF17txZY8eO1Z/+9Ce99dZbevbZZ3XXXXfpjDPOcOTxgXiS+WB1W6KmvLxelZW1WrFiuyora9kCtA1uC55ibfdpmpFta956F0D2In6Cl7ktZkrFuefW6/LL68LJLy88h7YSH4ivra3Y3RI7AolKqaaRJH3++ed64okntH79eknSvvvuqxNOOCGpqc0dtWPHDv3pT3/S008/rS5dumjy5MmaNGlSUvexdWuMtdcuZRhNhc281GavsaKPKypywx8QUUuC4ggGm77QN09TzWRefy+n+hrbaeVKv8aNiz8V2+83VVlZm/HvLyd5/b3sFT5fU+0DWIP4CVZzuo8zIWZK5TnY2c+tl1C1PF5aWhhOfEiZH09Y1c9txWYrVmzXiBFxahJlAa7LzrAqfko5aZQpvPRG5Y/Lfh3t42z8YE2Fl9/Lbn2NY7XLMEwZhqFQ6LuRzHQntzKNl9/LXkLSyH289J7n79R+6erjthIdmcqufo43GGZV4sNLr5VV/ezWmNENuC47w6r4KeFC2EcddZQefPBB7b777ho1apSMOFse/vOf/+xwwwAvqq72RXwwSN8tCQoEsntEIVO49TVunrI/fXqeGhuNcJJowoR8VVZu1957uz9IAwAgUW6c9etFbS2hKitrUCBghutItU58JFODKVtfq7ZiM+IxeE3CSaPzzjtPhd9u9Xf++efb1iDAy6z4YM02Vo48OTGK5ebXuLy8XmVlDeHp7n36mOrZM1/5+Y2M4gAAMkZ7iQ43cyJWSeYx2hsM62jiw8uvlRVax2bZ8JyReRJOGp1yyikx/1+S6urq9N5776moqEhduzJ9HNmLEYXkLF3asZGn6O3l7R/FcvtrHAiYzGoDAHhevMSHW2f9tseJGTfJPkYig2EdSXx49bWyErEZvC6lmkZVVVWaOXOmLrroIu2zzz762c9+ppqaGnXu3FkLFy7UoYceakdbbeGldZSs/bSflWuYGVFom2FIO3d2Vb9+0UFKouu8WwZFhtF0fsvdwuxeM+6F15hrhv3oY2dQ08h9vPSe5+/Uflb3cXuJDy/WirGize31c6qPUVGRGzUYVl5eb8msKC++Vlwz7EcfO8Oq+CmlvZevuOIK7bXXXtp777314IMPatu2bVq5cqV++9vf6tprr+1wowCvCwRMjRjR6NoPQzf44AO1OfLUntZTnU3T+e3lm19jqalIZPP2qcGgEfEzAABIXCLblDfP+vX7vbNtfbwZN+l+jPLyelVW1mrFiu2qrKxVeXm9KipyVVpaqHHjClRaWqiKityU2uTF1wpApISXp7X01ltv6e9//7v22GMPPfvsszr66KPVs2dPjRkzRrfddpvVbQSQgfbdVynXBooVFLXmRJ2h1iOhP/1pgx54ICfrCj0CAGCVRJcz2V0rxuraQ8XFIRmGGTHIZRjWxiodqbvYcgmV1XWIqOsDeFtKqe2uXbtq69at+uSTT/Tmm2/qyCOPlCStXbtWPXr0sLJ9ADJU375KeeSpOShqyTDM8DEnRrFiBVTLluXEHRkFAADxxfqMbyvxkezM7kRnA1s1y8ZpVs3qsWNWFLPwAe9KaabRuHHjdPbZZ6tTp07q27evRo4cqfvvv19z587V7373O6vbCCBDnX56aiNPrYtR+3ymZs2q0ymnODeKFXu2U3YXegQAoKPs2nAi0QLRdu32VV3ti1pKb5rWxwlWzOpx806xAJyXUtLowgsv1KBBg/Txxx9rzJgx8vv9CgQCuv7661VWVmZ1GwFksFR3lCgvr9eXX0pXXtkU2M2enafu3eXYcrBYAZVkqmXiiAALAJDpmjeGOOggKT/fmvu0ejlTMokgu3b7cjIR09Hduty+UywAZ6U8x/Doo4/WhAkT9L///U+7du3SsGHDSBgBaeSFAsxWtjEYbEoUNY/ahUJNAeHDD+c40gexpoD/7GcNFHoEAGSN5mVcp5xSoH79pKVLrVvGZeVypmSWWyWzPC4ZThSEtjLOilUcG0B2SmmmUV1dnWbPnq2HHnpIkvTUU0/p2muv1Y4dO3T99derW7duljYSQHyJTrlOp9ZtXLxYOvnk1O8vVgAYChmaMqWzY30QayT04osNCj0CADJe9OwdWbKMyw7JFKG2c5aNnQWh7YgFOzpjCUBmSGmm0XXXXaeqqiqtWLFCeXl5kqTzzz9fX3zxhebMmWNpAwHEl8jWtOkWq41nnaUOtTHWSGAzJ/ug9UioFws9emGWGgDAXZzYQj5d7JxlY0ec0FYs+MYbPj7fAXRYSlf1p59+WpdccokGDhwYPjZw4EDNnj1b//73vy1rHID2uSloa04+tA5SYrdRHd6Fo+U079as6INsSKZ4dYcYAEB62bWMyw7xilC3xUuDQG3FgsceW8DnO4AOS+kbVW1trTp37hx1PBQKqbGRKYyAk9wStLVMPhxzTGSQEruN6nAbm0cC77hjhwzD2j7IhmSKF2apAQDcKbpGj1xby88tsZJdYs++NiPqPvL5DiBVKSWNRo0apRtuuEHffPNN+NjGjRs1Z84cHXHEEZY1DkD7nCis2J7WyYfmHcSagxRJUW28/XZZ0sZAwNTJJzfo+uut64NsSaa4aZYaAMB7mgdvHn54uzZskE4/3V31FJu5IVayU+vn15RA4vMdgDVSKoR92WWXaebMmTrkkEMUCoU0fvx4bdu2TSNHjtSsWbOsbiOAdthZWDERsZIPzZqDlJZtLC4OafDgLtq61bo2WNkHdm236zZObv8LAMhMgYCpPn0a1bOnLP1ct1q6YyW7tXx+BQWmjjuugM93AJZIOmn0zTffKCcnR7fccos2btyo9evXq6GhQUVFReratauuvvpqzZ071462AogjnTtcxEo+NGsZpDS30bBpwo5VfZBoMiUYNFRd3ZQE82LwaecOMQAAuI0XdgPrSGzR8vnx+Q7AKgnPUfz00081adIkHXzwwSotLdVZZ52l3XbbTUceeaTKysr0r3/9S8cdd5xeeOEFO9sLwIWii1K7Y/p3qoWsE5nGnik1j+zcIQYAACTOytjCrZ/v2bDJCJBpDNM0E/o2d8455+iDDz7Q1KlTlZubq8WLF2vAgAH6/e9/r7PPPlvr1q3ThAkT9Pvf/16777673e22zNat25RYD6SfYUg9e3b1VJu9hj7umGDQCE+L3r7daHP6txP9XFGRG65L5PM1JYGSDZian0/r5xEMGiotLYyaiVRZWeuqUTzez/ajj53h80k9enRNdzPQgpfe8/yd2o8+7rhEYgsv9XOsGVNWxGZO8FI/exV97Ayr4qeEl6dVVlbqxhtv1GGHHSZJ2n///XXKKado3bp1Mk1Ty5Yt06BBgzrcIADe5ZZp320Vsi4ra0gqqdPW88mWmkcAAGQqty0xz6TYIlZyqKyswZLYDIDzEl6e9vXXX6t///7hn3/wgx+ovr5effr00YMPPkjCCIBr2L0rWKZv3QsAQCZz4xLzTIkt2hq4e/VVPzu2Ah6V8F+paZry+/0Rx/x+v84//3zl5qb/QgsAzewOvNqrecR6fQAA3KmtpEa6P7MTqafoBW0N3BmGMiIpBmSjDqd2CwsLrWgHAA9zW5LEicCrrQKTbhy9jMVtrxkAAE6wezZyR1hdvDodn/VtDdwdfHBjRiTFADu4PS5PuKaRJD3xxBPq0qVL+OdQKKSnn35aPXr0iDhv7NixljQOgPu5tahheXm9ysoaYhaytkrrmkfxailJck3tBLe+ZgAA2K05qdG64LRbZrxYVR+yI5/1Han31DxwN316nhobjYjkkBOxGeA1XojLE949bdSoUYndoWHon//8Z4ca5SQvVWynyrz96OPkpLqLWKb288qVfo0bVxB1/Nxz67RwYSfHPwxi9bNXdn7zikx9L7sNu6e5j5fe8/yd2s9rfVxRkRuV1HDbl7RYEu3njnzWW/UFtq0daL3Ajvez2wqvp5vXrhl2sTsud3z3tOeee67DDwYgs2TSTh9WiDV66fOZ4YSRlP7dQnjNAADZLtkZL177wp/qZ71Vu89K7tlR1w28MJME6eGVuDz9i3cBeFam7PRhlVi1lH7723pX1U7gNQMAoOkze8SIxoRm3nihVmFLqX7Wu7nek1e5tfA63MErcTlXAAApy5SdPlLRVsG61kUsp0zZ5aoPg2x+zQAASIZXv/Cn+lnvlS+wXkIiDvF4JS5PqhA2ALSWjUUN25tm3HpKdlsFIdMlG18zAEB26sjSMq8sHYkllc/6eEWsO8prS/ys4vbC60g/L8TlJI0AdFg2rVtPZb2/Gz8Msuk1AwBkp47WkvH6F/5UPuvtiFkyuaZPe8kwOxNxyBxuj8uZFwcASUh1mnGitRMAAEDHWbG0zImlI20td0+n9mKWZNrs1SV+iUi03lXr0gWZkjBD9iBpBABJKC4OyTAigyjD8M6oIwAA2cCqWjJ2fuH3YpHtZNucqTV9kk2GMXgIL/P2XysAAAAAtGJlUWc7vvB7cQZOKm3O1OLamZoMA2LhXQ0ASaiu9sk0I4ME0yRIAADATZzelSjZZWZeTDqk0uZEXwc3LtOLJ1OTYUAsFMIG4God2W3Djp06vF4UEwCAbOHURhSpFHr2YjyRapvbex28WCibAtfIJu5NZQPoELtHbJwYEerIWn+76gQ4PXIJAABSZ3ctmVSXmXkxnuhIm9t6Hby4TK8ZBa6RLZhpBHhYWzNp7B6xSfX+m9vbv39IPXu2f26yW9tbcdtEODVyCQAA3C3ekq32ttD2YjxhdZs70n9u4Pat0gErMNMI8Ki2ZtLYPWKT6v23bG9JSaGWLIn/OB1Z65/qbZOZPcUuGAAAoKO1bbwYT1jZZmoDAe5H0gjwoHiJG7sLK6Zy/7Hae9ZZsm23jfZuGys55MVtbwEAQHp5cZmZm9B/gPuRNAI8KF7ixu4Rm1TuP3Z7ZcluG8neNlZyyE3r6b22ewgAANmO2jYdQ/8B7kZNI8CD4u1eYfduDqncf+z2qsO7bSR727aSQ4sWmUmvp7djZzYv7h4CAACobdNR9B/gXiSNAJvYkVRo1l7ixu7Cisnef6z23n67oUDAlNlO0zoSRLS+bVsztCQltYWsHckdu4t3AwAAAECySBoBNnBixkh7iRu7R2ySvf+W7S0uDmnw4C7autW25sXU1gytgw9uTHj2lF3JHa/vHtKanUlTAAAAAM6gphFgMSfr43htxw2r25ts/Z94tY4SXU9vV6HxTNo9hKLiAADYh/qHAJxE0giwmN27l6FJqomJeMmhRJJadiV3nNg9xIkg001FxQEAyDRLlkglJQzMAHAO32IBi2XSjBG36mhioiMznuxM7ti5e4hTs39ImgIAYI9g0NCUKWJgBoCjqGkEWMzu3cuQ/vo/iRYCb67rU1hoqrbWSKi+jx21qJwssh1vZz8AAJC6pvgn8piX6x8C8AaSRoAN7N69LNu5ITHRXnKnZTF0yZRkX1H09jiZZCNpCgCAPZriH0UkjhiYAWA31gsANvFakeqOcLogoxP1fzqi9cweKb3TyJ1eMmnnMjsAALJVIGBq8WK5Nv4BkJmYaQSgQ1rOqHFyJo2bZ3PFmtnTLB3TyNMx+8eOZXYAAGS7yZOlgw+uVXW1dfFP83L6RJbRA8g+JI0ApMzJWjmxuDUxEWv5XLN0TSN3c5INAAAkLhAw1bu3NfFPugb/nERSDOgYlqcBSBk7ZUVrDkxmzfpu+VxTTaP0TyPPpiWTAAAgvo7uRusFTu0eC2QyZhoBSJkbClK7SevRulmz6jR0aEgFBaa2bzeY4QMAyGrM+HCXdO9Ga7d0z4gHMkX2TgcA0GFuL0jdWioFuxO9TazAZM6cPBUVhVRSEmKGDwAgqzHjw33s2CgjXtzk9MYpzIgHrMFfDIAOibVTltNBQSJSCVaTuQ2BCQAAsWXDMigvsnrwL17clI6kodO7xwKZim8zADqsZa0cN44kphKsJnsbuwITNybgAABIBgMr7hVr8C8V8eKmdCUNvTYjHnArrtQALOPWkcRUgtVkb2NHYOLGBBwAAMlixoe7WbFRRry4KZ1JQ6uSYkA2I2kEIEqqs1vcOpKYSrCaym2sDEzcmoADACBZzPjIfPHipnQnDdk9FugYkkYAInRkdku6g4K2pBKsphrgWhWYuDUBBwBAKpjxkdnixU0kDQFvM0zTzOq/1q1bt8krPWAYUs+eXT3VZq/J9j4OBg2VlhZGJCv8flOVlbUJf7BXVORq+vQ8NTYa4aCgdWCYrn4OBpuSLkVFiW/1m8ptrGDFa5Ht72cn0MfO8PmkHj26prsZaMFL73n+Tu1HHzvDC/0cL25KV0yVLC/0s9fRx86wKn7KsaAtADJEvNktgUBjQvdRXl6vsrIGVwYFTaNdiT2PjtzGCs2jcq0TcG7qTwAAvCoYNFRd7VNxsbtiFa+LFzelK6YC0DEkjQCENS8vaz27JdnlZQQF1nBzAg4AAK+qqMgN1w30+ZoGaVguBwCxURwDQBhrzt2H4o0AAFiHjSYyQ6qbtgBIHjONAERgdgsAAMhUVizFR3oxUwxwFjONAERxw+wWu0aQGJkCACB7uXWnVySGmWKA8zybNHr33Xc1cODAiH/jxo1Ld7MAWKCiIlelpYUaN65ApaWFqqjIdfX9AoBXED8h27EU39vizRQDYA/PLk+rqqrSfvvtpzvuuCN8LCfHs08HwLfaGkEqK2voUEBn9f2y6woALyJ+AliK72VWbdoCIHGejRLWr1+v/v37q1evXuluCgAL2VVrwMr7ZS09AK8ifgKasNOrNzXPFJs+PU+NjQYzxQAHeDppNHDgwHQ3A4DF7BpBsup+7ZoJBQBOIH4C4HXMFAOc5emkUSgU0oknnqht27bpxz/+sf74xz+qS5cuSd2P4aGaac1t9VKbvYY+dka8fu7TJ/YIUp8+HQsIrLrfmprYM5Y2bPCpTx/7RyyTWRbH+9l+9LEz6F/rED/BDvSxM+jn7/TpY9oWd9HP9qOPnWFV/xqmaboyNbtz505t3rw55u/22GMPHXbYYTrssMM0depUff3117rmmmu01157aeHChQ63FIAdNm2SqqqkffaR+vZ1z/1u2iT16yeFWkxQ8vulDRusbWcsS5ZIU6Y0PbbPJy1eLE2ebO9jAvAW4idkkk2bpA8+kPbd1/7PWABAbK5NGq1atUpnnHFGzN8tWLBAhx56qPLy8pSb27T70dtvv63x48fr3//+t/bcc8+EH+ezz7bJnT0QzTCkHj26eqrNXkMfO8Pr/bx0aW7UjKXTT7e3plEwaKikpDBqed3q1bVtzjjyej97AX3sDJ9P2mOPruluhicQP0Xj79R+dvTx0qXR9QPt/qx1O97LzqCf7UcfO8Oq+Mm1y9OGDx+u9957L+Hz+/fvL0navHlzUkGPacpzb1Qvttlr6GNneLWfY62lt/t5rF8fe1lcdbVPvXvHn57t1X72EvrYXvRt4oif2ubFNnuNVX1M/cD4eC87w8p+Ztfd2Hgv28uqvvVZczfOqqqqUklJiTZu3Bg+tnbtWuXk5Khfv35pbBmAbBEImBoxotGxD/7mQt4tscUsgGQQP8Er4u14CnhNRUWuSksLNW5cgUpLC1VRkZvuJgFJ8eSVt7i4WP369dOsWbP0/vvv6/XXX9esWbP005/+VN26dUt38wDAcs1bzPr9TYkjtpgFkCziJ3gFAyXIFG3NmgsGqQAN7/Bk0sjn82nhwoXq0qWLysvLde655+qwww7TzJkz0900ALBNeXm9/vGP7bryyp36xz+2q7w8u2s7AEgO8RO8goESZApmzSETuLamUXt69+6tW2+9Nd3NAADHVFREFwUlcQQgGcRP8IpY9QPdjro1aK151lzrjUyYNQcvIcUJAB7A9GYAQLZxun5gR1C3BrEwaw6ZwLMzjQAgm8Sb3hwIxN89DQAA2Ifd3hCPF2fNAS2RNAIAD2B6MwAA7sTADtoTCJi8F+BZLE8DAA9gejMAAO7Ebm8AMhkzjQDAI5jeDACA+zQP7EyfnqfGRoOBHQAZhaQRAHgI05sBAHAfBnYAZCqSRgAAAADQQQzsAMhE1DQCAAAAAABAFJJGAAAAAAAAiELSCAAAAAAAAFFIGgEAAAAAACAKSSMA8Khg0NDKlX4Fg0a6mwIAAAAgA5E0AgAPqqjIVWlpocaNK1BpaaEqKnLT3SQAAAAAGYakEQBHNc+O2bQp3S3xrmDQ0LRpeQqFmmYYhUKGpk/PY8YRAAAAAEuRNALgmObZMaecUqB+/aSlS5ObHcNyrCbV1b5wwqhZY6Ohmhou6QAAAACswzcMAI6Inh2jpGbHsBzrO8XFIfl8ZsQxv99UUVEoTS0CAAAAkIlIGgFwREdmx7AcK1IgYGr+/Dr5/U2JI7/f1Lx5dQoEzHZuCQAAAACJy0l3AwBkh+bZMS0TR4nOjomXcAoEGi1vqxeUl9errKxBNTU+FRWFSBgBAICsEgwaqq72qbiYOAiwEzONADgienaMEp4dw3Ks2AIBUyNGNBIoAQCArELZAsA5JI0AOKa8vF6VlbW6884d+utfpVGjGhK6HcuxAAAAIFG2AHAay9MAOOr553O+/aCXfL5CzZ9fp/Ly+nZvx3IsAAAAULYAcBYzjQA4pqMjQyzHAgAA6Jhg0NDKlX7PzsyhbAHgLJJGABzTkR3UAAAA0DGZUAvIybIFXk+wAVZgeRoAy7S3i0VHdlADAABA6tqa8V1W1uC5WdxOlC1YujQ33F8+n5lwSQUg0zC8D8ASiYxcUdA6/RgxAwAgO2XajG87yxZs2iSKbQPf8uYVAoCrJFOrqLy8XqtX1+r556XVq2sZsXFQR6akk2wCAMDbqAWUuA8+UEYl2ICO4F0PoMOSHbkKBEwdeaSYYeSgjhQhz4T6BwAAZDurZ3xn8oDSvvuKBBvwLZJGADqMkSv3S3VKekd3vAMAAO5RXl6vysparVixXZWVqc/4zvQBpb59RUkF4FskjQB0GLWK3C/VxF6m1T8AACDbdbQWULYMKJ1+ujUJNsDr2D0NgCWc2MUCqWtO7E2fnqfGRiPhxB473gEAgJbiDSgFAo1papU9AgEz454TkCySRgAswweru6WS2Es12QQAADITA0pAdiFpBABZJJXEHrPIAABAMwaUgOxC0ggA0C5mkQEAgGYMKAHZg6QRAAAAACApDCgB2YHtbwAAAAAAABCFpBEAAAAAAACikDQCAAAAAABAFJJGAAAAAAAAiELSCAAAAAAAAFFIGgEAAAAAACAKSSMAAAAAAABEIWkEAAAAAACAKCSNAAAAAAAAEIWkEQAAAAAAAKKQNAIAAAAAAEAUkkYAAAAAAACIQtIIAAAAAAAAUUgaAQAAAAAAIApJIwAAAAAAAEQhaQQAAAAAAIAoJI0AAAAAAAAQhaQRAAAAAAAAopA0AgAAAAAAQBSSRgAAAAAAAIhC0ggAAAAAAABRSBoBWSgYNLRypV/BoJHupgAAAAAAXIqkEZBlKipyVVpaqHHjClRaWqiKitx0NwkAAAAA4EIkjYAsEgwamjYtT6FQ0wyjUMjQ9Ol5zDgCAAAAAEQhaQRkkepqXzhh1Kyx0VBNDZcCAAAAAEAkvikCWaS4OCSfz4w45vebKioKpalFAAAAAAC3ImkEZJFAwNT8+XXy+5sSR36/qXnz6hQImO3cEgAAAACQbXLS3QAAziovr1dZWYNqanwqKgqRMAIAAAAAxETSCMhCgYCpQKAx3c0AAAAAALgYy9MAAAAAAAAQhaQRAAAAAAAAorg+aWSapn7961/roYceijj+xRdf6Pzzz1dJSYlGjRqlRx55JE0tBAAAcBfiJwAAYAVXJ41CoZDmzJmjl156Kep3F198sbZt26Zly5bp7LPP1qWXXqq33norDa0EAABwD+InAABgFdcWwt68ebOmT5+uTZs2abfddov43UcffaTnn39e//znP9W3b18NGDBAb775pv76179q8ODBaWoxAABAehE/AQAAK7l2ptE777yj3r17a/ny5eratWvE79asWaPevXurb9++4WPDhg3TG2+84XQzAQAAXIP4CQAAWMm1M41GjRqlUaNGxfzdli1b9L3vfS/iWI8ePbR58+akH8cwUmpeWjS31Utt9hr62Bn0szPoZ/vRx86gfxNH/BSNv1P70cfOoJ+dQT/bjz52hlX9m7ak0c6dO9sMUnr16qWCgoI2b7tjxw516tQp4linTp20a9eupNvRo0fX9k9yGS+22WvoY2fQz86gn+1HH8MpxE+p82KbvYY+dgb97Az62X70sTekLWm0Zs0anXHGGTF/t2DBAo0ePbrN2+bl5UUFOLt27VJ+fn7S7fjss20yzaRvlhaG0fSH5aU2ew197Az62Rn0s/3oY2f4fNIeexBYSsRPqeDv1H70sTPoZ2fQz/ajj51hVfyUtqTR8OHD9d5776V02z333FNbt26NOLZ161b16tUr6fsyTXnujerFNnsNfewM+tkZ9LP96GN70bffIX5KnRfb7DX0sTPoZ2fQz/ajj+1lVd+6thB2PEOHDtXHH3+sTz/9NHyssrJSQ4cOTV+jAAAAXIz4CQAAJMuTSaO99tpLI0eO1B/+8AetW7dODzzwgP7+97+rvLw83U0DAABwJeInAACQLE8mjSRp7ty5Kiws1KmnnqpFixbp6quv1uDBg9PdLAAAANcifgIAAMlIW02jZDz33HNRx3r06KFFixaloTUAnBAMGqqu9qm4OKRAgMXOAJAs4icAANBRnp1pBCBzVVTkqrS0UOPGFai0tFAVFbnpbhIAAAAAZB2SRgBcJRg0NG1ankIhQ5IUChmaPj1PwaCR5pYBAAAAQHYhaQTAVaqrfeGEUbPGRkM1NVyuAAAAAMBJfAsD4CrFxSH5fJE1jPx+U0VFoTS1CAAAAACyE0kjAK4SCJiaP79Ofn9T4sjvNzVvXh3FsAEAAADAYZ7YPQ1Adikvr1dZWYNqanwqKmL3NAAAAABIB5JGAFwpEDAVCDSmuxkAAAAAkLVYngYAAAAAAIAoJI0AAAAAAAAQhaQRAAAAAAAAopA0AgAAAAAAQBSSRgAAAAAAAIhC0ggAAAAAAABRSBoBAAAAAAAgCkkjAAAAAAAARCFpBAAAAAAAgCgkjQAAAAAAABCFpBEAAAAAAACikDQCAAAAAABAFJJGAAAAAAAAiELSCAAAAAAAAFFIGgEAAAAAACAKSSMAAAAAAABEIWkEAAAAAACAKCSNAAAAAAAAEIWkEQAAAAAAAKKQNAIAAAAAAEAUkkYAAAAAAACIQtIIAAAAAAAAUUgaAQAAAAAAIApJIwAAAAAAAEQhaQQAAAAAAIAoJI0AAAAAAAAQhaQRAAAAAAAAopA0AgAAAAAAQBSSRgAAAAAAAIhC0ggAAAAAAABRSBoBAAAAAAAgCkkjAAAAAAAARCFpBAAAAAAAgCgkjQAAAAAAABCFpBEAAAAAAACikDQCAAAAAABAFJJGAAAAAAAAiELSCAAAAAAAAFFIGgEAAAAAACAKSSMAAAAAAABEIWkEAAAAAACAKCSNAAAAAAAAEIWkEQAAAAAAAKKQNAIAAAAAAEAUkkYAAAAAAACIQtIIAAAAAAAAUUgaAQAAAAAAIApJIwAAAAAAAEQhaQQAAAAAAIAoJI0AAAAAAAAQhaQRAAAAAAAAopA0AgAAAAAAQBSSRgAAAAAAAIhC0ggAAAAAAABRSBoBAAAAAAAgCkkjAAAAAAAARCFpBAAAAAAAgCgkjQAAAAAAABDF9Ukj0zT161//Wg899FDE8XvuuUcDBw6M+HfttdemqZUAAADuQfwEAACskJPuBsQTCoV01VVX6aWXXtKYMWMifldVVaXTTjtN55xzTvhY586dnW4iAACAqxA/AQAAq7g2abR582ZNnz5dmzZt0m677Rb1+/Xr12vs2LHq1atXGloHAADgPsRPAADASq5dnvbOO++od+/eWr58ubp27Rr1++rqau29997ONwwAAMCliJ8AAICVXDvTaNSoURo1alTM323dulVffvmlVqxYoYsvvlh5eXmaMGGCfv3rX8swjKQex+eTTNOKFtuv+al5qc1eQx87g352Bv1sP/rYGUl+tGc14qdo/J3ajz52Bv3sDPrZfvSxM6yKn9KWNNq5c6c2b94c83e9evVSQUFBm7etrq6WJPXo0UMLFy7U2rVrNWfOHPn9fk2aNCmpduyxR/QonNt5sc1eQx87g352Bv1sP/oYTiF+Sp0X2+w19LEz6Gdn0M/2o4+9IW1JozVr1uiMM86I+bsFCxZo9OjRbd72kEMO0SuvvKLdd99dkjRw4EB9/vnnuv/++5MOegAAALyC+AkAADgpbUmj4cOH67333kv59s0BT7P+/fu3OfIGAACQCYifAACAk1xbCDueBx54QMccc4zMFgsg165dq+Li4jS2CgAAwL2InwAAQLI8mTQ6/PDDtWXLFl177bX68MMP9fjjj+uOO+7Qb37zm3Q3DQAAwJWInwAAQLJcu3taPH369NHixYt13XXX6f7771ePHj00ffp0HX/88eluGgAAgCsRPwEAgGQZpskmdwAAAAAAAIjkyeVpAAAAAAAAsBdJIwAAAAAAAEQhaQQAAAAAAIAoJI08oK6uTjNnztRBBx2kkSNH6q677kp3kzLKrl27NGbMGK1atSp8bOPGjZo0aZKGDh2q448/XitXrkxjC71t8+bNmjp1qg455BD96Ec/0jXXXKO6ujpJ9LOVPvzwQ02ePFklJSU68sgjdeedd4Z/Rz9bb8qUKbrooovCP7/77rv66U9/qiFDhmj8+PF6++2309g6b3vmmWc0cODAiH9Tp06VRD8jOcRP9iJ+shfxk/2InZxH/GQfO+MnkkYeMHfuXL399tu69957dfnll+vWW2/Vk08+me5mZYS6ujpdeOGF+uCDD8LHTNPUueeeq549e2r58uU6+eSTdd555ykYDKaxpd5kmqamTp2qHTt2qKKiQjfccIOef/553XjjjfSzhUKhkKZMmaLdd99dK1as0BVXXKGFCxfqscceo59t8Pjjj+uFF14I/7x9+3ZNmTJFBx10kB566CGVlJTorLPO0vbt29PYSu+qqqpSWVmZVq5cGf43Z84c+hlJI36yD/GTvYif7Efs5DziJ3vZGj+ZcLXa2lpz0KBB5iuvvBI+tmDBAvP0009PY6sywwcffGCedNJJ5oknnmgOGDAg3Mf/+c9/zKFDh5q1tbXhc3/5y1+aN998c7qa6llVVVXmgAEDzC1btoSPPfbYY+bIkSPpZwtt3rzZ/N3vfmdu27YtfOzcc881L7/8cvrZYl988YX54x//2Bw/frw5Y8YM0zRN84EHHjBHjRplhkIh0zRNMxQKmUcffbS5fPnydDbVs6ZNm2bOnz8/6jj9jGQQP9mH+Ml+xE/2I3ZyFvGT/eyMn5hp5HLr1q1TQ0ODSkpKwseGDRumNWvWKBQKpbFl3vfqq69q+PDhWrZsWcTxNWvWaP/991dBQUH42LBhw/Tmm2863ELv69Wrl+6880717Nkz4vg333xDP1voe9/7nm688UZ16dJFpmmqsrJSr732mg455BD62WLXXnutTj75ZO2zzz7hY2vWrNGwYcNkGIYkyTAMlZaW0scpWr9+vfbee++o4/QzkkH8ZB/iJ/sRP9mP2MlZxE/2szN+Imnkclu2bNHuu++uTp06hY/17NlTdXV1+vLLL9PXsAxw2mmnaebMmercuXPE8S1btuh73/texLEePXro008/dbJ5GWG33XbTj370o/DPoVBIS5cu1aGHHko/22TUqFE67bTTVFJSomOOOYZ+ttDLL7+s119/Xeecc07EcfrYOqZpqqamRitXrtQxxxyj0aNHa968edq1axf9jKQQP9mH+Ml+xE/OInayF/GT/eyOn3KsbjCstWPHjoiAR1L45127dqWjSRmvrT6nvzvuuuuu07vvvqsHH3xQ99xzD/1sg5tvvllbt27Vn/70J11zzTW8ny1SV1enyy+/XJdddpny8/MjfkcfWycYDIb788Ybb9SmTZs0Z84c7dy5k35GUoifnMffqH2In+xF7GQf4idn2B0/kTRyuby8vKgXtPnn1n94sEZeXl7UKOSuXbvo7w667rrrdO+99+qGG27QgAED6GebDBo0SFLTh/T06dM1fvx47dixI+Ic+jl5t956qw488MCIkd9mbV2n6ePk9enTR6tWrVK3bt1kGIb2228/hUIh/eEPf9AhhxxCPyNhxE/O43PdHsRP9iN2sg/xkzPsjp9IGrncnnvuqS+++EINDQ3KyWl6ubZs2aL8/HzttttuaW5dZtpzzz1VVVUVcWzr1q1R0/qQuNmzZ+v+++/Xddddp2OOOUYS/WylrVu36s0339To0aPDx/bZZx/V19erV69eqq6ujjqffk7O448/rq1bt4brozR/+D711FMaM2aMtm7dGnE+fZy67t27R/zcv39/1dXVqVevXvQzEkb85Dw+161H/GQfYidnED85x874iZpGLrfffvspJycnolBVZWWlBg0aJJ+Pl88OQ4YM0TvvvKOdO3eGj1VWVmrIkCFpbJV33Xrrrfrb3/6m66+/XieccEL4OP1snU2bNum8887T5s2bw8fefvtt7bHHHho2bBj9bIH77rtPjz32mB5++GE9/PDDGjVqlEaNGqWHH35YQ4YM0RtvvCHTNCU1rStfvXo1fZyCF198UcOHD48Y4V27dq26d++uYcOG0c9IGPGT8/hctxbxk72InZxB/OQMu+MnPjVdrnPnzho7dqz+9Kc/6a233tKzzz6ru+66S2eccUa6m5axDjnkEPXu3VsXX3yxPvjgAy1evFhvvfWWJkyYkO6mec769et122236cwzz9SwYcO0ZcuW8D/62TqDBg3SAQccoJkzZ6qqqkovvPCCrrvuOv32t7+lny3Sp08f9evXL/yvsLBQhYWF6tevn4499lh9/fXXuuqqq1RVVaWrrrpKO3bs0HHHHZfuZntOSUmJ8vLydOmll6q6ulovvPCC5s6dq9/85jf0M5JC/OQ8Pm+sQ/xkP2InZxA/OcP2+MmE623fvt384x//aA4dOtQcOXKkeffdd6e7SRlnwIAB5iuvvBL+ecOGDWZ5ebl54IEHmieccIL50ksvpbF13nX77bebAwYMiPnPNOlnK3366afmueeea5aWlpojRowwFy5caIZCIdM06Wc7zJgxw5wxY0b45zVr1phjx441Bw0aZE6YMMF855130tg6b3v//ffNSZMmmUOHDjVHjBhh3nLLLeH3Mv2MZBA/2Y/4yR7ET84gdnIe8ZN97IyfDNP8dp4SAAAAAAAA8C2WpwEAAAAAACAKSSMAAAAAAABEIWkEAAAAAACAKCSNAAAAAAAAEIWkEQAAAAAAAKKQNAIAAAAAAEAUkkYAAAAAAACIQtIIAAAAAAAAUUgaAdCoUaM0cODA8L8DDjhAxx57rO655x5LH2fixIm65ZZbJEkXXXSRLrroonZvs2vXLv3f//1fyo/50EMPadSoUVHHv/nmGw0ZMqTN+7700kt15plnpnTfAAAg8xE/RSN+AjJPTrobAMAdZs6cqeOPP16S1NDQoFdeeUWXXHKJunfvrrFjx1r+eJdccklC5z3++ONatGiRTj31VEsfv0uXLjryyCP19NNPR913Q0ODnnnmGc2cOdPSxwQAAJmF+Ok7xE9AZmKmEQBJUteuXdWrVy/16tVLvXv31imnnKLDDjtMTz/9tG2P17Vr13bPM03TlseXpDFjxuiVV17Rtm3bIo6//PLLqqur0+jRo217bAAA4H3ET98hfgIyE0kjAG3KyclRbm6upKap0bNnz9ZRRx2lI488Ut98840++eQT/fa3v9WQIUM0atQo3XrrrWpsbAzf/plnntExxxyjoUOH6sorr4z4Xevp1Y888oiOPfZYDRkyRD//+c/17rvvatWqVbr44ov18ccfa+DAgdq0aZNM09SCBQs0cuRIHXTQQfrtb3+rYDAYvp/NmzfrN7/5jYYOHapTTjlFH330UZvP74gjjlB+fr6ee+65iONPPPGEysrKVFhYqMrKSv3iF7/QkCFDNHToUJ155pn63//+F3Vfq1at0sCBAyOOtX6OzzzzjI4//ngNGTJEEyZM0Kuvvhr+3bp16/Tzn/9cQ4YM0Y9+9CPdeuutbbYbAAC4F/ET8ROQSUgaAYhSX1+vp59+Wi+99JKOOuqo8PGHHnpI1113nW699VYVFhbqvPPOU48ePbRixQpdc801euyxx7Ro0SJJUlVVlS644AL94he/0PLly9XQ0KDKysqYj/fiiy/qkksu0S9/+Us9+uijOvDAA3XWWWeppKREM2fO1Pe//32tXLlSvXv31tKlS/XYY49p/vz5WrZsmXr06KFf//rXqq+vlyT97ne/UygU0gMPPKAzzzxT9957b5vPs1OnTjr66KMjRgPr6+v1z3/+U2PGjNG2bdt01llnacSIEfr73/+uJUuW6KOPPtLixYuT7tN169ZpxowZOvvss/Xoo4/qpJNO0plnnqkPP/xQkvTHP/5R++23n/7+97/rqquu0p133qkXXngh6ccBAADpQfxE/ARkImoaAZAkXX755Zo9e7YkaefOncrPz9cvf/lLnXTSSeFzjjzySJWWlkpqmoIcDAb1wAMPyOfzqbi4WDNmzNDFF1+sc889V8uXL9dBBx2kSZMmSZJmzZql559/PuZjL1u2TGPGjNEvfvELSU0BQG5urr766it17dpVfr9fvXr1kiTdeeeduvzyyzV8+HBJ0pVXXqmRI0fqxRdf1F577aU33nhDzz//vAKBgPbdd1+9/fbbevLJJ9t83ieeeKLOPvtsbd++XQUFBfrPf/4jSfrxj3+sL7/8Uuecc45+9atfyTAM7bXXXvrJT36it956K+n+XbJkiU499VSdeOKJkqQzzjhDr732mu6//35ddNFF+vjjj3XUUUepT58+2muvvXT33Xerb9++ST8OAABwDvET8ROQ6UgaAZAkTZ06VT/5yU8kSXl5eerVq5f8fn/EOX369An///r16/Xll19q2LBh4WOhUEg7d+7UF198ofXr12u//fYL/y43Nzfi55Zqamr085//PPxzp06dNGPGjKjzamtr9emnn+r3v/+9fL7vJkru3LlTGzZsUF1dnbp3765AIBD+3aBBg+IGPcOHD1fXrl3173//W8cee6yefPJJHXPMMcrNzVWvXr00duxY3XPPPVq7dq2qqqr03nvvhQO/ZKxfv15PPPGEli1bFj5WX1+vkSNHSpLOOussXX/99Vq2bJmOPPJInXzyyeFADwAAuBPxE/ETkOlIGgGQJPXo0UP9+vWLe05eXl74/xsaGlRcXKzbbrst6rzmAo2tizA2r+9vLScnsUtR85r+m266SUVFRRG/69atm15++eWEH7OZ3+/Xscceq2eeeUZHHXWUnn32WS1YsEBS0/r+8ePH64ADDtDhhx+uU089Vf/617+0Zs2aqPsxDCPqWENDQ/i5NTY26swzz4zaSSU/P1+SNGXKFB133HF69tln9dxzz+mXv/ylZs+erZ/+9Kdx2w8AANKH+In4Cch01DQCkJKioiIFg0Htscce6tevn/r166dNmzbp5ptvlmEY2nffffXf//43fH4oFNK6deti3le/fv0iftfY2KhRo0apsrIyIpjYbbfd1KNHD23ZsiX8mL1799Z1112nmpoaDRgwQF999VV4nbskrV27tt3nMmbMGL3wwgv6z3/+o4KCAh188MGSmgovduvWTbfffrt++ctf6qCDDtLGjRtj7kjSHFx988034WObNm2K6K9NmzaF292vXz8tW7ZM//73v1VXV6c5c+aoU6dO+tWvfqX77rtPp556qp566ql22w4AALyD+CkS8RPgfiSNAKRk5MiR6tOnj/7whz/ovffe0+uvv65Zs2apc+fO8vv9OvXUU/X2229r4cKFqq6u1rXXXhuxS0dLEydO1KOPPqoVK1boww8/1DXXXCPTNHXAAQeoc+fO+uqrr7RhwwY1NDRo0qRJuvHGG/Xcc89pw4YNuvTSS7V69WoVFxerf//+OuywwzRz5kytW7dOzz77rJYuXdrucxk6dKi6d++uG264Qccff3w40OrevbuCwaBefvllbdy4UYsXL9bTTz+tXbt2Rd3Hvvvuq/z8fC1atEgbN27UnXfeqXfffTf8+0mTJukf//iH/vKXv+ijjz7SPffco3vuuUd777238vLytHr1as2ePVvV1dX673//q9dff137779/iq8OAABwI+KnSMRPgPuRNAKQEr/fr4ULFyoUCunUU0/V+eefryOOOEKXXnqppKbRr4ULF+rxxx/X2LFjtWXLFh1xxBEx7+vggw/W5ZdfrgULFuikk07S2rVrtWjRIuXn5+vQQw9Vv379dOKJJ2rt2rWaPHmyJkyYoMsuu0xjx45VMBjUkiVL1K1bN0nSDTfcoN13310///nPdf3112vixIkJPZ8TTjhBa9euDRdalKTjjjtOJ510kqZOnarx48dr1apVmjFjhtavXx8V+HTp0kWzZ8/W448/rjFjxmjdunUqLy8P/37o0KGaO3eu/vrXv+r444/X//3f/2n+/PnhUbkbbrhBO3bs0IQJEzR58mQddNBBOueccxJ/QQAAgOsRPxE/AV5jmLHmCQIAAAAAACCrMdMIAAAAAAAAUUgaAQAAAAAAIApJIwAAAAAAAEQhaQQAAAAAAIAoJI0AAAAAAAAQhaQRAAAAAAAAopA0AgAAAAAAQBSSRgAAAAAAAIhC0ggAAAAAAABRSBoBAAAAAAAgCkkjAAAAAAAARPl/JTQnzoaBE94AAAAASUVORK5CYII="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 47
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "*Linear 更发散，Polynomial 更收敛*",
   "id": "dd9a3e29f2c805e7"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 8.5 其他优化尝试",
   "id": "41ea0afd1997cae1"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "#### 将 LSTAT 转换为线性进行线性回归",
   "id": "950f8ef058d79967"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "*取数*",
   "id": "779599308aef9ea4"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:18.698692Z",
     "start_time": "2025-03-16T09:20:18.693156Z"
    }
   },
   "cell_type": "code",
   "source": [
    "index = [i for i in range(len(names)) if names[i] in high_corr][:-1]\n",
    "high_corr_data3 = data_shuffle[:, index]\n",
    "high_corr_data3[:10]"
   ],
   "id": "f4b34a83a820fc26",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 6.59 , 16.1  ,  9.5  ],\n",
       "       [ 8.398, 13.   ,  5.91 ],\n",
       "       [ 5.572, 16.6  , 14.69 ],\n",
       "       [ 6.03 , 21.   ,  7.88 ],\n",
       "       [ 6.715, 17.8  , 10.16 ],\n",
       "       [ 4.906, 20.2  , 34.77 ],\n",
       "       [ 5.404, 18.6  , 23.98 ],\n",
       "       [ 5.155, 20.2  , 20.08 ],\n",
       "       [ 6.606, 16.6  ,  7.37 ],\n",
       "       [ 5.593, 19.1  , 12.5  ]])"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 48
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "*将 LSTAT 转换为线性*",
   "id": "6a7c55ac6e78fd2"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:20.030630Z",
     "start_time": "2025-03-16T09:20:20.025415Z"
    }
   },
   "cell_type": "code",
   "source": [
    "new = 1 / high_corr_data3[:, -1]\n",
    "high_corr_data_new = np.c_[high_corr_data3[:, :2], new]\n",
    "high_corr_data_new[:10]"
   ],
   "id": "ad40f580a209076e",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 6.59      , 16.1       ,  0.10526316],\n",
       "       [ 8.398     , 13.        ,  0.16920474],\n",
       "       [ 5.572     , 16.6       ,  0.06807352],\n",
       "       [ 6.03      , 21.        ,  0.12690355],\n",
       "       [ 6.715     , 17.8       ,  0.0984252 ],\n",
       "       [ 4.906     , 20.2       ,  0.02876043],\n",
       "       [ 5.404     , 18.6       ,  0.04170142],\n",
       "       [ 5.155     , 20.2       ,  0.0498008 ],\n",
       "       [ 6.606     , 16.6       ,  0.13568521],\n",
       "       [ 5.593     , 19.1       ,  0.08      ]])"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 49
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "*标准化*",
   "id": "292d2d9bb34b8d6a"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:21.137569Z",
     "start_time": "2025-03-16T09:20:21.132050Z"
    }
   },
   "cell_type": "code",
   "source": [
    "scaler3 = StandardScaler()\n",
    "high_corr_data_new_scaler = scaler3.fit_transform(high_corr_data_new)\n",
    "high_corr_data_new_scaler[:10]"
   ],
   "id": "3830caf026ddb345",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.43504177, -1.08911039, -0.09751683],\n",
       "       [ 3.01082466, -2.52243411,  0.73047619],\n",
       "       [-1.01526076, -0.85792914, -0.5790933 ],\n",
       "       [-0.36276709,  1.17646583,  0.18270922],\n",
       "       [ 0.6131241 , -0.30309415, -0.18606303],\n",
       "       [-1.96408344,  0.80657583, -1.08816685],\n",
       "       [-1.25460342,  0.06679585, -0.92059121],\n",
       "       [-1.60934343,  0.80657583, -0.81571065],\n",
       "       [ 0.45783631, -0.85792914,  0.29642475],\n",
       "       [-0.98534293,  0.29797709, -0.42465479]])"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 50
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "*切分数据集*",
   "id": "136a2cbdfb78f61"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:22.154173Z",
     "start_time": "2025-03-16T09:20:22.149509Z"
    }
   },
   "cell_type": "code",
   "source": "X_train_new, X_test_new, y_train_new, y_test_new = train_test_split(high_corr_data_new_scaler, target, test_size=0.2, random_state=15)",
   "id": "e6ffe15df409187c",
   "outputs": [],
   "execution_count": 51
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "*直接使用函数*",
   "id": "3b6d191fade835d8"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:23.134120Z",
     "start_time": "2025-03-16T09:20:23.127840Z"
    }
   },
   "cell_type": "code",
   "source": [
    "model3 = LinearRegression()\n",
    "model3.fit(X_train_new, y_train_new)"
   ],
   "id": "952d54a9d62f2b64",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression()"
      ],
      "text/html": [
       "<style>#sk-container-id-4 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-4 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-4 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-4 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-4 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-4 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-4 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-4 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-4 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-4 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-4 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-4 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-4 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-4\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LinearRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-7\" type=\"checkbox\" checked><label for=\"sk-estimator-id-7\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LinearRegression</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.linear_model.LinearRegression.html\">?<span>Documentation for LinearRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>LinearRegression()</pre></div> </div></div></div></div>"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 52
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:23.672550Z",
     "start_time": "2025-03-16T09:20:23.668628Z"
    }
   },
   "cell_type": "code",
   "source": "model3.coef_",
   "id": "45fe74182a2d6ca1",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 2.57574508, -1.86897407,  4.83990781]])"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 53
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:24.223715Z",
     "start_time": "2025-03-16T09:20:24.218767Z"
    }
   },
   "cell_type": "code",
   "source": "model3.intercept_",
   "id": "dae751e2153c861e",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([22.59409013])"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 54
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "*模型评估*",
   "id": "8cfedc8a0746b92e"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:25.756529Z",
     "start_time": "2025-03-16T09:20:25.725456Z"
    }
   },
   "cell_type": "code",
   "source": [
    "y_predict_new = model3.predict(X_test_new)\n",
    "np.sqrt(mean_squared_error(y_test_new, y_predict_new))"
   ],
   "id": "7e50cddad585d40c",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(4.120550012823165)"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 55
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:27.997880Z",
     "start_time": "2025-03-16T09:20:27.990159Z"
    }
   },
   "cell_type": "code",
   "source": "4.12 / (target.max() - target.min())",
   "id": "6e6cce72a4cf3179",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(0.09155555555555556)"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 56
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:29.786556Z",
     "start_time": "2025-03-16T09:20:29.781556Z"
    }
   },
   "cell_type": "code",
   "source": "r2_score(y_test_new, y_predict_new)",
   "id": "8248e5feaeb0b34d",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7663489134600246"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 57
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "房价误差大约为 9.1%，相较于最开始的模型降低 1%\n",
    "\n",
    "能解释大约 76.6% 的房价变化，相较于最开始的模型提高 6%"
   ],
   "id": "b31f9833e982880f"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "***对比多特征多项式优化较少***",
   "id": "4c29dbed9cc6cd14"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "#### 尝试直接使用多项式",
   "id": "a6a05798d305e956"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:31.871256Z",
     "start_time": "2025-03-16T09:20:31.867109Z"
    }
   },
   "cell_type": "code",
   "source": "X_train_new2, X_test_new2, y_train_new2, y_test_new2 = train_test_split(high_corr_data_new, target, test_size=0.2, random_state=15)",
   "id": "f1750154122ae161",
   "outputs": [],
   "execution_count": 58
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:32.650635Z",
     "start_time": "2025-03-16T09:20:32.318928Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.linear_model import Ridge\n",
    "pipeline2 = Pipeline([\n",
    "    # 当include_bias=True 时可用在梯度下降中，自动增加一列全为 1 项\n",
    "    ('PolynomialFeatures', PolynomialFeatures(degree=12, include_bias=False)), \n",
    "    ('StandardScaler', StandardScaler()), \n",
    "    ('LinearRegression', Ridge())\n",
    "])\n",
    "pipeline2.fit(X_train_new2, y_train_new2)"
   ],
   "id": "5179384f010d2dfe",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Pipeline(steps=[('PolynomialFeatures',\n",
       "                 PolynomialFeatures(degree=12, include_bias=False)),\n",
       "                ('StandardScaler', StandardScaler()),\n",
       "                ('LinearRegression', Ridge())])"
      ],
      "text/html": [
       "<style>#sk-container-id-5 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-5 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-5 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-5 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-5 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-5 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-5 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-5 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-5 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-5 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-5 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-5 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-5 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-5 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-5\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[(&#x27;PolynomialFeatures&#x27;,\n",
       "                 PolynomialFeatures(degree=12, include_bias=False)),\n",
       "                (&#x27;StandardScaler&#x27;, StandardScaler()),\n",
       "                (&#x27;LinearRegression&#x27;, Ridge())])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-8\" type=\"checkbox\" ><label for=\"sk-estimator-id-8\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>Pipeline</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>Pipeline(steps=[(&#x27;PolynomialFeatures&#x27;,\n",
       "                 PolynomialFeatures(degree=12, include_bias=False)),\n",
       "                (&#x27;StandardScaler&#x27;, StandardScaler()),\n",
       "                (&#x27;LinearRegression&#x27;, Ridge())])</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-9\" type=\"checkbox\" ><label for=\"sk-estimator-id-9\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>PolynomialFeatures</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.preprocessing.PolynomialFeatures.html\">?<span>Documentation for PolynomialFeatures</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>PolynomialFeatures(degree=12, include_bias=False)</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-10\" type=\"checkbox\" ><label for=\"sk-estimator-id-10\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-11\" type=\"checkbox\" ><label for=\"sk-estimator-id-11\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>Ridge</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.linear_model.Ridge.html\">?<span>Documentation for Ridge</span></a></div></label><div class=\"sk-toggleable__content fitted\"><pre>Ridge()</pre></div> </div></div></div></div></div></div>"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 59
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:33.363057Z",
     "start_time": "2025-03-16T09:20:33.356491Z"
    }
   },
   "cell_type": "code",
   "source": [
    "y_predict_new2 = pipeline2.predict(X_test_new2)\n",
    "np.sqrt(mean_squared_error(y_test_new2, y_predict_new2))"
   ],
   "id": "163c4c5d31dbd697",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(3.3002457442939477)"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 60
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:34.525341Z",
     "start_time": "2025-03-16T09:20:34.520790Z"
    }
   },
   "cell_type": "code",
   "source": "3.30 / (target.max() - target.min())",
   "id": "bea4a539a0de5409",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(0.07333333333333333)"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 61
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:36.772369Z",
     "start_time": "2025-03-16T09:20:36.767751Z"
    }
   },
   "cell_type": "code",
   "source": "r2_score(y_test_new2, y_predict_new2)",
   "id": "93d5614e2fd41af4",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8501178256127857"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 62
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "房价误差大约为 7.3%，相较于最开始的模型降低 3.7%\n",
    "\n",
    "能解释大约 85% 的房价变化，相较于最开始的模型提高 14.5%"
   ],
   "id": "8b7a09f40834f62a"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "#### degree=12 有过拟合风险，需进行交叉验证",
   "id": "e32e385a01caf261"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:38.349279Z",
     "start_time": "2025-03-16T09:20:38.345641Z"
    }
   },
   "cell_type": "code",
   "source": [
    "def polynomial_regression(train_data, target_data, val_data):\n",
    "    pipeline_val = Pipeline([\n",
    "        ('PolynomialFeatures', PolynomialFeatures(degree=12, include_bias=False)), \n",
    "        ('StandardScaler', StandardScaler()), \n",
    "        ('LinearRegression', Ridge())\n",
    "    ])\n",
    "    pipeline_val.fit(train_data, target_data)\n",
    "    return pipeline_val.predict(val_data)"
   ],
   "id": "dff8a32fd1aec785",
   "outputs": [],
   "execution_count": 63
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:39.640109Z",
     "start_time": "2025-03-16T09:20:38.918909Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.model_selection import KFold\n",
    "kf = KFold(n_splits=10, shuffle=True, random_state=15)\n",
    "\n",
    "mse_result = []\n",
    "r2_result = []\n",
    "for fold, (train_idx, val_idx) in enumerate(kf.split(X_train_new2, y_train_new2)):\n",
    "    X_fold_train, y_fold_train = X_train_new2[train_idx], y_train_new2[train_idx]\n",
    "    X_val, y_val = X_train_new2[val_idx], y_train_new2[val_idx]\n",
    "    y_val_predict = polynomial_regression(X_fold_train, y_fold_train, X_val)\n",
    "    mse_result.append(np.sqrt(mean_squared_error(y_val, y_val_predict)))\n",
    "    r2_result.append(r2_score(y_val, y_val_predict))"
   ],
   "id": "d676ad949f2fc093",
   "outputs": [],
   "execution_count": 64
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:39.644160Z",
     "start_time": "2025-03-16T09:20:39.641063Z"
    }
   },
   "cell_type": "code",
   "source": "sum(mse_result) / 10",
   "id": "c86fb2ef415d8139",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(5.635728794857327)"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 65
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-16T09:20:41.299743Z",
     "start_time": "2025-03-16T09:20:41.295458Z"
    }
   },
   "cell_type": "code",
   "source": "sum(r2_result) / 10",
   "id": "12175d4a7405f10a",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.46012499964060816"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 66
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "*RMSE 增大且 R2 降低 :* ***过拟合***\n",
    "\n",
    "修改参数后，当 degree = 3 时效果最好，RMSE = 4.49，R2 = 0.75"
   ],
   "id": "b0b04c5519889064"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 9. 项目总结",
   "id": "16ef12493163e67e"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 背景：\n",
    "正在学习 **机器学习** ，最开始接触的是线性回归和多项式回归，因此选择了经典的 **波士顿房价预测** 作为项目练习"
   ],
   "id": "36e56804943633de"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 描述：\n",
    "该项目使用 **线性回归模型 (含梯度下降)** 和 **多项式回归模型** ，采用 **RMSE**、**R2** 和 **交叉验证** 多种模型评估方式进行验证"
   ],
   "id": "1dd816369696e6e9"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 结论：\n",
    "通过预测波士顿房价，可以得出 **RM**, **TAX**, **INDUS**, **PTRATIO**, **LSTAT** 这五种特征值对房价具有一定的影响\n",
    "\n",
    "最终采用的多项式回归模型拟合效果最好，**RMSE = 7%**，**R2 = 85.5%**"
   ],
   "id": "fb86e7d542d69cf"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 缺陷：\n",
    "- 模型构建较为生疏，代码较为粗糙\n",
    "- 思考过程可能未涉及全面\n",
    "- 可视化部分较少，可能影响观察和判断"
   ],
   "id": "5d0d0cea4de46753"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
